3 Revize 80275c1d14 ... ca433b7a15

Autor SHA1 Zpráva Datum
  hezihao ca433b7a15 Merge remote-tracking branch 'origin/v1.0.2' into v1.0.2 před 6 měsíci
  hezihao d2e2a2f561 [feat]键盘插件,每次打开键盘,都拉取数据 před 6 měsíci
  hezihao 10ee88f975 [feat]键盘插件,修改跳转方式 před 6 měsíci

+ 4 - 0
android/app/src/main/AndroidManifest.xml

@@ -35,6 +35,10 @@
         <meta-data
             android:name="io.flutter.embedding.android.EnableImpeller"
             android:value="false" />
+        <!-- 禁用3.29版本的线程合并 -->
+        <meta-data
+            android:name="io.flutter.embedding.android.DisableMergedPlatformUIThread"
+            android:value="true" />
         <meta-data
             android:name="UMENG_APPKEY"
             android:value="680dcdadbc47b67d834e37bb" />

+ 11 - 10
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/keyboard/CustomKeyboardService.kt

@@ -12,6 +12,7 @@ import com.atmob.keyboard_android.mvvm.viewmodel.KeyboardViewModel
 import com.atmob.keyboard_android.util.ClipboardHelper
 import com.atmob.keyboard_android.util.KeyboardHolder
 import com.atmob.keyboard_android.util.LogUtil
+import com.atmob.keyboard_android.util.bridge.util.PluginInitializer
 
 /**
  * 自定义键盘的输入法服务
@@ -46,16 +47,16 @@ class CustomKeyboardService : InputMethodLifecycleService(), ICustomKeyboardServ
         super.onStartInputView(info, restarting)
         LogUtil.d("CustomKeyboardService => onStartInputView()")
         // 键盘弹起,刷新数据
-//        if (PluginInitializer.isPluginInitComplete()) {
-//            mKeyboardViewModel.refreshData()
-//        } else {
-//            PluginInitializer.addPluginInitListener(object : PluginInitializer.PluginInitListener {
-//                override fun onPluginInitComplete() {
-//                    mKeyboardViewModel.refreshData()
-//                    PluginInitializer.removePluginInitListener(this)
-//                }
-//            })
-//        }
+        if (PluginInitializer.isPluginInitComplete()) {
+            mKeyboardViewModel.refreshData()
+        } else {
+            PluginInitializer.addPluginInitListener(object : PluginInitializer.PluginInitListener {
+                override fun onPluginInitComplete() {
+                    mKeyboardViewModel.refreshData()
+                    PluginInitializer.removePluginInitListener(this)
+                }
+            })
+        }
     }
 
     override fun onFinishInputView(finishingInput: Boolean) {

+ 11 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/ActivityUtil.kt

@@ -1,5 +1,6 @@
 package com.atmob.keyboard_android.util
 
+import android.app.Activity
 import android.app.ActivityManager
 import android.content.Context
 import android.content.Context.ACTIVITY_SERVICE
@@ -19,5 +20,15 @@ class ActivityUtil private constructor() {
                 taskList.first().moveToFront()
             }
         }
+
+        /**
+         * Activity是否已经销毁
+         */
+        fun isDestroy(activity: Activity?): Boolean {
+            if (activity == null) {
+                return true
+            }
+            return activity.isDestroyed || activity.isFinishing
+        }
     }
 }

+ 24 - 15
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/util/FlutterPageLaunchUtil.kt

@@ -42,25 +42,34 @@ class FlutterPageLaunchUtil private constructor() {
             args: Map<String, Serializable?> = mapOf<String, Serializable>(),
             offAll: Boolean = false
         ) {
-            val context = ContextUtil.getContext()
-            val flutterEngine = FlutterEngineHolder.getFlutterEngine()
+//            val context = ContextUtil.getContext()
+//            val flutterEngine = FlutterEngineHolder.getFlutterEngine()
 
             // 构建参数
             val params = buildParams(path, args, offAll)
 
             // 如果Activity存在,直接通过MethodChannel跳转Flutter页面
             val currentActivity = ActivityProvider.get().currentActivity
-            if (currentActivity != null && flutterEngine != null) {
-                // 如果App在后台,则将App移动到前台
-                if (AppMonitor.get().isAppBackground) {
-                    ActivityUtil.moveToFront(context)
-                }
-                // 再通知Flutter进行页面跳转
-                JumpHostAppPageUtil.jumpAppPage(params, flutterEngine)
-            } else {
-                // 如果没有Activity,则通过原生Activity跳转
-                val intent = buildIntent(params, offAll)
+            val newTask = ActivityUtil.isDestroy(currentActivity)
+
+//            if (currentActivity != null && flutterEngine != null) {
+//                // 如果App在后台,则将App移动到前台
+//                if (AppMonitor.get().isAppBackground) {
+//                    ActivityUtil.moveToFront(context)
+//                }
+//                // 再通知Flutter进行页面跳转
+//                JumpHostAppPageUtil.jumpAppPage(params, flutterEngine)
+//            } else {
+//                // 如果没有Activity,则通过原生Activity跳转
+//                val intent = buildIntent(params, offAll)
+//                Utils.getApp().startActivity(intent)
+//            }
+
+            val intent = buildIntent(params, offAll, newTask)
+            if (newTask) {
                 Utils.getApp().startActivity(intent)
+            } else {
+                currentActivity.startActivity(intent)
             }
         }
 
@@ -92,11 +101,11 @@ class FlutterPageLaunchUtil private constructor() {
          */
         private fun buildIntent(
             params: Map<String, Serializable?> = mapOf<String, Serializable>(),
-            offAll: Boolean = false
+            offAll: Boolean = false,
+            newTask: Boolean = false
         ): Intent {
             val intent: Intent = IntentUtils.getLaunchAppIntent(Utils.getApp().packageName)
-            val currentActivity = ActivityProvider.get().currentActivity
-            if (currentActivity == null) {
+            if (newTask) {
                 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
             }
             if (offAll) {