前言
版本: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, LifecycleOwner {
public FlutterActivity() {
lifecycle = new LifecycleRegistry(this);
}
它是继承Activity并实现了FlutterActivityAndFr

本文分析了Flutter在Android上的启动过程,从FlutterApplication的startInitialization到FlutterActivity的生命周期,特别是configureFlutterEngine方法中插件的注册。FlutterActivity通过FlutterActivityAndFragmentDelegate管理生命周期,并在onCreate中设置窗口透明度。后续文章将深入探讨FlutterActivityAndFragmentDelegate的细节。
最低0.47元/天 解锁文章
1453

被折叠的 条评论
为什么被折叠?



