srplab / starcore_for_flutter

middleware for flutter calling other script languages
140 stars 29 forks source link

Cannot call function twice (Error: Handler sending message to a Handler on a dead thread) #17

Open jinyus opened 4 years ago

jinyus commented 4 years ago

I went through the starter guide and calling the testCallPython() method works fine for the first time, but when I tried to call the method again, I get this error message:

W/MessageQueue(32073): Handler (com.srplab.starflut.StarflutPlugin$2$1) {bef6b4d} sending message to a Handler on a dead thread
W/MessageQueue(32073): java.lang.IllegalStateException: Handler (com.srplab.starflut.StarflutPlugin$2$1) {bef6b4d} sending message to a Handler on a dead thread
W/MessageQueue(32073):  at android.os.MessageQueue.enqueueMessage(MessageQueue.java:558)
W/MessageQueue(32073):  at android.os.Handler.enqueueMessage(Handler.java:754)
W/MessageQueue(32073):  at android.os.Handler.sendMessageAtTime(Handler.java:703)
W/MessageQueue(32073):  at android.os.Handler.sendMessageDelayed(Handler.java:673)
W/MessageQueue(32073):  at android.os.Handler.sendMessage(Handler.java:611)
W/MessageQueue(32073):  at com.srplab.starflut.StarflutPlugin.onMethodCall(StarflutPlugin.java:585)
W/MessageQueue(32073):  at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:230)
W/MessageQueue(32073):  at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
W/MessageQueue(32073):  at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:664)
W/MessageQueue(32073):  at android.os.MessageQueue.nativePollOnce(Native Method)
W/MessageQueue(32073):  at android.os.MessageQueue.next(MessageQueue.java:336)
W/MessageQueue(32073):  at android.os.Looper.loop(Looper.java:197)
W/MessageQueue(32073):  at android.app.ActivityThread.main(ActivityThread.java:8016)
W/MessageQueue(32073):  at java.lang.reflect.Method.invoke(Native Method)
W/MessageQueue(32073):  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
W/MessageQueue(32073):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1076)

Any tips on how to solve this?

Edit: After futher investigation this seems to be the line that causes the error:

StarCoreFactory starcore = await Starflut.getFactory();