improve flutter engine configuration
This commit is contained in:
@@ -28,7 +28,8 @@ import io.flutter.plugin.common.MethodChannel
|
|||||||
|
|
||||||
class MainActivity: FlutterFragmentActivity() {
|
class MainActivity: FlutterFragmentActivity() {
|
||||||
private val CHANNEL = "eu.weblibre.flutter_mozilla_components/trim_memory"
|
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) {
|
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
|
||||||
super.configureFlutterEngine(flutterEngine)
|
super.configureFlutterEngine(flutterEngine)
|
||||||
@@ -38,22 +39,27 @@ class MainActivity: FlutterFragmentActivity() {
|
|||||||
|
|
||||||
override fun onTrimMemory(level: Int) {
|
override fun onTrimMemory(level: Int) {
|
||||||
super.onTrimMemory(level)
|
super.onTrimMemory(level)
|
||||||
channel.invokeMethod("onTrimMemory", level)
|
channel?.invokeMethod("onTrimMemory", level)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun provideFlutterEngine(context: Context): FlutterEngine {
|
override fun provideFlutterEngine(context: Context): FlutterEngine {
|
||||||
val cache = FlutterEngineCache.getInstance()
|
val cache = FlutterEngineCache.getInstance()
|
||||||
val cachedEngine = cache.get("engine_id")
|
val cachedEngine = cache.get(ENGINE_ID)
|
||||||
if (cachedEngine != null) {
|
if (cachedEngine != null && cachedEngine.dartExecutor.isExecutingDart) {
|
||||||
return cachedEngine
|
return cachedEngine
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (cachedEngine != null) {
|
||||||
|
cache.remove(ENGINE_ID)
|
||||||
|
cachedEngine.destroy()
|
||||||
|
}
|
||||||
|
|
||||||
val flutterEngine = FlutterEngine(context.applicationContext)
|
val flutterEngine = FlutterEngine(context.applicationContext)
|
||||||
flutterEngine.navigationChannel.setInitialRoute("/")
|
flutterEngine.navigationChannel.setInitialRoute("/")
|
||||||
flutterEngine.dartExecutor.executeDartEntrypoint(
|
flutterEngine.dartExecutor.executeDartEntrypoint(
|
||||||
DartExecutor.DartEntrypoint.createDefault()
|
DartExecutor.DartEntrypoint.createDefault()
|
||||||
)
|
)
|
||||||
cache.put("engine_id", flutterEngine)
|
cache.put(ENGINE_ID, flutterEngine)
|
||||||
|
|
||||||
return flutterEngine
|
return flutterEngine
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user