Flutter中的两个FlutterActivity

本文介绍了Flutter中io.flutter.embedding.android.FlutterActivity和io.flutter.app.FlutterActivity的区别,前者已经取代后者并修复了黑屏问题,且支持GeneratedPluginRegister的注册。使用io.flutter.app.FlutterActivity会导致热启动失败,错误信息为'Error105receivedfromapplication:Isolatemustberunnable'。开发者需要按照官方升级指南更新代码以避免问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

io.flutter.app.FlutterActivity已经被废弃了,新的代码是io.flutter.embedding.android.FlutterActivity。参考以下链接进行更新代码

https://github.com/flutter/flutter/wiki/Upgrading-pre-1.12-Android-projects

下面可以不用看了

Flutter中有两个FlutterActivity分别位于:
io.flutter.embedding.android.FlutterActivity

io.flutter.app.FlutterActivity
这两个Activity的源码是不一样的,暂时不清楚
区别:

io.flutter.embedding.android.FlutterActivity
里面自己实现了以下代码
GeneratedPluginRegister.registerGeneratedPlugins(FlutterEngine(this))

io.flutter.app.FlutterActivity
里面没有实现
GeneratedPluginRegister.registerGeneratedPlugins(FlutterEngine(this))
io.flutter.embedding.android.FlutterActivity
里面没有
getFlutterView()函数

io.flutter.app.FlutterActivity
里面有
getFlutterView()函数
io.flutter.embedding.android.FlutterActivity
使用的话,程序启动不会黑屏
io.flutter.app.FlutterActivity
使用的话程序会黑屏

4、如果使用io.flutter.app.FlutterActivity的话,热启动无法使用,报错如下:
Error 105 received from application: Isolate must be runnable

参考资源链接:[Flutter启动流程探究:从MainActivity到插件注册](https://wenku.csdn.net/doc/4gqhgs63cy?utm_source=wenku_answer2doc_content) 在Flutter应用的启动流程中,MainActivity的onCreate()方法扮演着至关重要的角色。首先,调用super.onCreate(savedInstanceState)确保了FlutterActivity继承的父类Activity能够正常初始化。接下来,通过调用GeneratedPluginRegistrant.registerWith(this),Flutter应用会执行所有插件的注册过程。这个过程涉及到了几个关键的技术点和机制: 1. 插件注册机制:Flutter框架通过PluginRegistry接口管理插件的注册。每个插件在注册时都需要提供一个Plugin Registrar对象,该对象负责管理插件的初始化和与平台通信的接口。 2. GeneratedPluginRegistrant类的作用:这个类是由Android Studio根据项目中添加的Flutter插件自动生成的。它在Flutter应用构建过程中被创建,确保在应用启动时插件能够被正确注册。 3. registerWith()方法的执行:此方法遍历所有插件,对于每个插件,它调用其registerWith(PluginRegistry registry)方法,使用提供的Plugin Registrar对象进行注册。这一步骤确保了插件可以与Flutter引擎进行通信,处理来自Dart代码的调用。 4. FlutterEngine的初始化:与MainActivity启动几乎同步,FlutterEngine也开始初始化,它负责承载Dart虚拟机(Dart VM)和Flutter的渲染引擎。这个引擎是Flutter应用运行的核心,负责渲染UI和处理用户输入。 5. 加载和执行主Dart代码:FlutterEngine启动后,会加载并执行位于main.dart文件中的Dart代码,这是Flutter应用的入口点。这一步完成了Flutter UI的构建,并开始渲染应用的初始界面。 总结来说,MainActivity的onCreate()方法通过调用super.onCreate()和GeneratedPluginRegistrant.registerWith()两个关键方法,分别完成了FlutterActivity和插件的初始化。这一过程是Flutter应用启动并准备运行Dart代码的基础,理解这一流程对于开发者来说至关重要。如果希望深入了解Flutter的启动流程及其源码细节,推荐阅读资料《Flutter启动流程探究:从MainActivity到插件注册》。这份资源提供了详细的源码分析,帮助开发者掌握Flutter应用从启动到插件注册的完整过程。 参考资源链接:[Flutter启动流程探究:从MainActivity到插件注册](https://wenku.csdn.net/doc/4gqhgs63cy?utm_source=wenku_answer2doc_content)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值