Flutter Android启动源码分析(一)

本文分析了Flutter在Android上的启动过程,从FlutterApplication的startInitialization到FlutterActivity的生命周期,特别是configureFlutterEngine方法中插件的注册。FlutterActivity通过FlutterActivityAndFragmentDelegate管理生命周期,并在onCreate中设置窗口透明度。后续文章将深入探讨FlutterActivityAndFragmentDelegate的细节。
摘要由CSDN通过智能技术生成

前言

版本:Flutter 1.20.4 stable

这个系列主要讲解在Flutter的项目中,Android 从启动到加载Flutter等一系列的过程。

本文主要是对FlutterApplication的startInitialization方法及FlutterActivity整个类源码的分析

Application

<application
        android:name="io.flutter.app.FlutterApplication"
        android:label="flutter_channel"
        android:icon="@mipmap/ic_launcher">
        

public class FlutterApplication extends Application {
  @Override
  @CallSuper
  public void onCreate() {
    super.onCreate();
    FlutterMain.startInitialization(this);
  }
}

在Android项目的AndroidManifest.xml中指定了application为FlutterApplication,主要是一个初始化操作

最终会调用FlutterLoader类中的startInitialization方法

public void startInitialization(@NonNull Context applicationContext, @NonNull Settings settings) {
    if (this.settings != null) {
      return;
    }
    if (Looper.myLooper() != Looper.getMainLooper()) {
      throw new IllegalStateException("startInitialization must be called on the main thread");
    }
    applicationContext = applicationContext.getApplicationContext();
    this.settings = settings;
    long initStartTimestampMillis = SystemClock.uptimeMillis();
    initConfig(applicationContext);
    initResources(applicationContext);
    System.loadLibrary("flutter");
    VsyncWaiter.getInstance(
            (WindowManager) applicationContext.getSystemService(Context.WINDOW_SERVICE))
        .init();
    long initTimeMillis = SystemClock.uptimeMillis() - initStartTimestampMillis;
    FlutterJNI.nativeRecordStartTimestamp(initTimeMillis);
  }
  • 加载Flutter引擎的本机库以启用后续的JNI调用
  • 开始定位和打开应用程序APK中打包的Dart资源

FlutterApplication不 做过多分析,就是一些资源的初始化和so库加载的一些操作

FlutterActivity

class MainActivity : FlutterActivity(){}
 public class FlutterActivity extends Activity
    implements FlutterActivityAndFragmentDelegate.Host, LifecycleO
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值