From 33a57d387321b0eb36856aabbdc82263dd627d82 Mon Sep 17 00:00:00 2001 From: Aaron Clarke Date: Tue, 9 Mar 2021 10:32:03 -0800 Subject: [PATCH 1/3] fixed crash if you back out of 2 double engine activities --- .../multipleflutters/DoubleFlutterActivity.kt | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/add_to_app/multiple_flutters/multiple_flutters_android/app/src/main/java/dev/flutter/multipleflutters/DoubleFlutterActivity.kt b/add_to_app/multiple_flutters/multiple_flutters_android/app/src/main/java/dev/flutter/multipleflutters/DoubleFlutterActivity.kt index f86e09ac010..118d1645076 100644 --- a/add_to_app/multiple_flutters/multiple_flutters_android/app/src/main/java/dev/flutter/multipleflutters/DoubleFlutterActivity.kt +++ b/add_to_app/multiple_flutters/multiple_flutters_android/app/src/main/java/dev/flutter/multipleflutters/DoubleFlutterActivity.kt @@ -20,6 +20,10 @@ class DoubleFlutterActivity : FragmentActivity(), EngineBindingsDelegate { EngineBindings(activity = this, delegate = this, entrypoint = "bottomMain") } private val numberOfFlutters = 2 + private var engineCountStart = 0 + private companion object { + var engineCount = 0 + } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -37,24 +41,28 @@ class DoubleFlutterActivity : FragmentActivity(), EngineBindingsDelegate { val app = applicationContext as App + engineCountStart = engineCount for (i in 0 until numberOfFlutters) { + val engineId = engineCount + engineCount += 1 + val containerId = 12345 + engineId val flutterContainer = FrameLayout(this) root.addView(flutterContainer) - flutterContainer.id = 12345 + i + flutterContainer.id = containerId flutterContainer.layoutParams = LinearLayout.LayoutParams( FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT, 1.0f ) val engine = if (i == 0) topBindings.engine else bottomBindings.engine - FlutterEngineCache.getInstance().put(i.toString(), engine) + FlutterEngineCache.getInstance().put(engineId.toString(), engine) val flutterFragment = - FlutterFragment.withCachedEngine(i.toString()).build() + FlutterFragment.withCachedEngine(engineId.toString()).build() fragmentManager .beginTransaction() .add( - 12345 + i, - flutterFragment + containerId, + flutterFragment ) .commit() } @@ -65,7 +73,8 @@ class DoubleFlutterActivity : FragmentActivity(), EngineBindingsDelegate { override fun onDestroy() { for (i in 0 until numberOfFlutters) { - FlutterEngineCache.getInstance().remove(i.toString()) + val engineId = engineCountStart + i + FlutterEngineCache.getInstance().remove(engineId.toString()) } super.onDestroy() From 7ede955fe003855db0c50017ebd35fe6fc6a35ac Mon Sep 17 00:00:00 2001 From: Aaron Clarke Date: Tue, 9 Mar 2021 13:27:42 -0800 Subject: [PATCH 2/3] xiao feedback --- .../multipleflutters/DoubleFlutterActivity.kt | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/add_to_app/multiple_flutters/multiple_flutters_android/app/src/main/java/dev/flutter/multipleflutters/DoubleFlutterActivity.kt b/add_to_app/multiple_flutters/multiple_flutters_android/app/src/main/java/dev/flutter/multipleflutters/DoubleFlutterActivity.kt index 118d1645076..628105c2c2a 100644 --- a/add_to_app/multiple_flutters/multiple_flutters_android/app/src/main/java/dev/flutter/multipleflutters/DoubleFlutterActivity.kt +++ b/add_to_app/multiple_flutters/multiple_flutters_android/app/src/main/java/dev/flutter/multipleflutters/DoubleFlutterActivity.kt @@ -20,9 +20,14 @@ class DoubleFlutterActivity : FragmentActivity(), EngineBindingsDelegate { EngineBindings(activity = this, delegate = this, entrypoint = "bottomMain") } private val numberOfFlutters = 2 - private var engineCountStart = 0 + private val engineCountStart : Int private companion object { - var engineCount = 0 + var engineCounter = 0 + } + + init { + engineCountStart = engineCounter + engineCounter += numberOfFlutters } override fun onCreate(savedInstanceState: Bundle?) { @@ -41,10 +46,8 @@ class DoubleFlutterActivity : FragmentActivity(), EngineBindingsDelegate { val app = applicationContext as App - engineCountStart = engineCount for (i in 0 until numberOfFlutters) { - val engineId = engineCount - engineCount += 1 + val engineId = engineCountStart + i val containerId = 12345 + engineId val flutterContainer = FrameLayout(this) root.addView(flutterContainer) From 498cece1916f13f7fffc66340cf0042d450c8e86 Mon Sep 17 00:00:00 2001 From: Aaron Clarke Date: Tue, 9 Mar 2021 13:28:26 -0800 Subject: [PATCH 3/3] removed unused variable --- .../java/dev/flutter/multipleflutters/DoubleFlutterActivity.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/add_to_app/multiple_flutters/multiple_flutters_android/app/src/main/java/dev/flutter/multipleflutters/DoubleFlutterActivity.kt b/add_to_app/multiple_flutters/multiple_flutters_android/app/src/main/java/dev/flutter/multipleflutters/DoubleFlutterActivity.kt index 628105c2c2a..a1ef4b78701 100644 --- a/add_to_app/multiple_flutters/multiple_flutters_android/app/src/main/java/dev/flutter/multipleflutters/DoubleFlutterActivity.kt +++ b/add_to_app/multiple_flutters/multiple_flutters_android/app/src/main/java/dev/flutter/multipleflutters/DoubleFlutterActivity.kt @@ -44,8 +44,6 @@ class DoubleFlutterActivity : FragmentActivity(), EngineBindingsDelegate { setContentView(root) - val app = applicationContext as App - for (i in 0 until numberOfFlutters) { val engineId = engineCountStart + i val containerId = 12345 + engineId