qiuxiang / flutter-android-window

A flutter plugin allows you to create native android floating window.
MIT License
62 stars 19 forks source link

adb启动service打开悬浮框,静止20分钟后,点击悬浮框会闪退 #21

Closed WxqKb closed 2 years ago

WxqKb commented 2 years ago

2022-08-26 16:25:09.062 4859-4859/com.dss.upgrade_assistant E/MessageQueue-JNI: java.lang.RuntimeException: Cannot execute operation because FlutterJNI is not attached to native. at io.flutter.embedding.engine.FlutterJNI.ensureAttachedToNative(FlutterJNI.java:479) at io.flutter.embedding.engine.FlutterJNI.dispatchPointerDataPacket(FlutterJNI.java:716) at io.flutter.embedding.engine.renderer.FlutterRenderer.dispatchPointerDataPacket(FlutterRenderer.java:485) at io.flutter.embedding.android.AndroidTouchProcessor.onTouchEvent(AndroidTouchProcessor.java:160) at io.flutter.embedding.android.AndroidTouchProcessor.onTouchEvent(AndroidTouchProcessor.java:101) at io.flutter.embedding.android.FlutterView.onTouchEvent(FlutterView.java:918) at android.view.View.dispatchTouchEvent(View.java:12513) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3024) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2705) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2662) at android.view.View.dispatchPointerEvent(View.java:12752) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5119) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4922) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4439) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4492) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4458) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4598) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4466) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4655) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4439) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4492) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4458) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4466) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4439) at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7111) at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7080) at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7041) at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7214) at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:186) at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:326) at android.os.Looper.loop(Looper.java:160) at android.app.ActivityThread.main(ActivityThread.java:6718) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 2022-08-26 16:25:09.068 4859-4859/com.maxhub.upgrade_assistant E/AndroidRuntime: FATAL EXCEPTION: main Process: com.maxhub.upgrade_assistant, PID: 4859 java.lang.RuntimeException: Cannot execute operation because FlutterJNI is not attached to native. at io.flutter.embedding.engine.FlutterJNI.ensureAttachedToNative(FlutterJNI.java:479) at io.flutter.embedding.engine.FlutterJNI.dispatchPointerDataPacket(FlutterJNI.java:716) at io.flutter.embedding.engine.renderer.FlutterRenderer.dispatchPointerDataPacket(FlutterRenderer.java:485) at io.flutter.embedding.android.AndroidTouchProcessor.onTouchEvent(AndroidTouchProcessor.java:160) at io.flutter.embedding.android.AndroidTouchProcessor.onTouchEvent(AndroidTouchProcessor.java:101) at io.flutter.embedding.android.FlutterView.onTouchEvent(FlutterView.java:918) at android.view.View.dispatchTouchEvent(View.java:12513) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3024) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2705) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3030) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2662) at android.view.View.dispatchPointerEvent(View.java:12752) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5119) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4922) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4439) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4492) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4458) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4598) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4466) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4655) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4439) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4492) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4458) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4466) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4439) at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7111) at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7080) at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7041) at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7214) at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:186) at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:326) at android.os.Looper.loop(Looper.java:160) at android.app.ActivityThread.main(ActivityThread.java:6718) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

WxqKb commented 2 years ago

点击悬浮框任意地方都会闪退

WxqKb commented 2 years ago

找到原因了,engine静置一段时间就会被销毁。 使用 FlutterEngineGroup 管理engine,不需要自行保活:https://flutter.cn/docs/development/add-to-app/multiple-flutters