【问题标题】:Start a FlutterActivity subclass using a cached engine使用缓存引擎启动 FlutterActivity 子类
【发布时间】: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。有人已经解决了这个问题吗?

【问题讨论】:

    标签: android flutter kotlin


    【解决方案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 中是如何工作的?我需要你的帮助!
    猜你喜欢
    • 2020-10-06
    • 2010-11-30
    • 2013-07-27
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多