improve flutter engine configuration

This commit is contained in:
Fabian Freund
2026-02-13 19:46:46 +01:00
parent de345d5d72
commit bc7e584a01
@@ -28,7 +28,8 @@ import io.flutter.plugin.common.MethodChannel
class MainActivity: FlutterFragmentActivity() {
private val CHANNEL = "eu.weblibre.flutter_mozilla_components/trim_memory"
private lateinit var channel: MethodChannel
private val ENGINE_ID = "engine_id"
private var channel: MethodChannel? = null
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
@@ -38,22 +39,27 @@ class MainActivity: FlutterFragmentActivity() {
override fun onTrimMemory(level: Int) {
super.onTrimMemory(level)
channel.invokeMethod("onTrimMemory", level)
channel?.invokeMethod("onTrimMemory", level)
}
override fun provideFlutterEngine(context: Context): FlutterEngine {
val cache = FlutterEngineCache.getInstance()
val cachedEngine = cache.get("engine_id")
if (cachedEngine != null) {
val cachedEngine = cache.get(ENGINE_ID)
if (cachedEngine != null && cachedEngine.dartExecutor.isExecutingDart) {
return cachedEngine
}
if (cachedEngine != null) {
cache.remove(ENGINE_ID)
cachedEngine.destroy()
}
val flutterEngine = FlutterEngine(context.applicationContext)
flutterEngine.navigationChannel.setInitialRoute("/")
flutterEngine.dartExecutor.executeDartEntrypoint(
DartExecutor.DartEntrypoint.createDefault()
)
cache.put("engine_id", flutterEngine)
cache.put(ENGINE_ID, flutterEngine)
return flutterEngine
}