使用缓存引擎启动 FlutterActivity 子类
Posted
技术标签:
【中文标题】使用缓存引擎启动 FlutterActivity 子类【英文标题】:Start a FlutterActivity subclass using a cached engine 【发布时间】:2020-09-29 12:16:20 【问题描述】:我目前正在将使用 Flutter 开发的视图添加到现有的 android 应用程序中。我一直在关注 Flutter website 中的教程,并决定使用缓存引擎来最大程度地减少用户在导航到应用程序的 Flutter 部分时可能遇到的延迟。为此,您必须启动 Flutter 活动,例如
startActivity(
FlutterActivity
.withCachedEngine("my_engine_id")
.build(this) // this is a Context
)
一段时间后,我需要编写一个方法通道来从应用程序的 Flutter 部分与 Android 主机应用程序进行通信,因此我按照 Flutter 的另一个 tutorials 中的说明进行操作,其中显示活动实现通道的必须扩展FlutterActivity
。
所以我的问题是我不确定如何使用缓存引擎初始化此活动,因为我显然不能再使用FlutterActivity.withCachedEngine
。有人已经解决了这个问题吗?
【问题讨论】:
【参考方案1】:查看FlutterActivity
文档后,我找到了provideFlutterEngine
method。文档描述清楚地指出:
如果需要缓存的 FlutterEngine,则应提供缓存的 FlutterEngine。
所以我的类的最终实现现在看起来像这样
class MyActivity : FlutterActivity()
override fun provideFlutterEngine(context: Context): FlutterEngine? =
FlutterEngineCache.getInstance().get(FlutterConstants.ENGINE_ID)
override fun configureFlutterEngine(flutterEngine: FlutterEngine)
super.configureFlutterEngine(flutterEngine)
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "my-channel")
.setMethodCallHandler call, result ->
if (call.method == "my-method")
myMethod()
result.success(null)
else
result.notImplemented()
private fun myMethod()
// Do native stuff
我只是开始写startActivity(Intent(this, MyActivity::class.java))
【讨论】:
您好,它在 xcode 中是如何工作的?我需要你的帮助!以上是关于使用缓存引擎启动 FlutterActivity 子类的主要内容,如果未能解决你的问题,请参考以下文章
错误记录Android 应用中启动 FlutterActivity 报错 ( have you declared this activity in your AndroidManifest )(代码片
FlutterFlutter 混合开发 ( 安卓端向 Flutter 传递数据 | FlutterFragment 数据传递 | FlutterActivity 数据传递 )
Flutter:带有 patform 通道的 Firebase 消息传递 - 重复的 FlutterActivity