Iam integrating FlutterActivity to a native Android app. I have CustomFlutterActivity which inherits from FlutterActivity, which I want to launch using cached FlutterEngine.

This is the code from the documentation for how to do this:

startActivity(
      FlutterActivity
        .withNewEngine()
        .build(currentActivity)
      );

What I want to achieve is to launch my CustomFlutterActivity with my cached engine (and not a generic FlutterActivity as the documentation says)


Solution 1: beltry

In your CustomFlutterActivity which I suppose is derived from FlutterActivity you can override getCachedEngineId and provide the my_engine_id you have previously cached according to the docs, namely:

FlutterEngineCache
      .getInstance()
      .put("my_engine_id", flutterEngine);

Thus:

class CustomFlutterActivity: FlutterActivity() {
    override fun getCachedEngineId(): String? {
        return "my_engine_id"
    }
}

See docs


Solution 2: Karandeep Singh

You can override provideFlutterEngine and return FlutterEngine from the cache.

class CustomFlutterActivity : FlutterActivity() {
    override fun provideFlutterEngine(context: Context): FlutterEngine? {
        return FlutterEngineCache.getInstance().get("flutter_engine")
    }
}