gpt4 book ai didi

android - flutter 插件 : "Methods marked with @UiThread must be executed on the main thread."

转载 作者:行者123 更新时间:2023-12-03 02:46:50 25 4
gpt4 key购买 nike

我正在创建 Flutter 插件。我将回调从 Android 发送到 Flutter 的 channel 很少。情况是我正在监听一些在 OTHER 线程而不是主 UI 线程中触发的事件。

在最近的 Flutter 更新之后,我开始收到这样的错误

E/AndroidRuntime( 9400): FATAL EXCEPTION:  STARTING
E/AndroidRuntime( 9400): Process: com.northernbitcoin.coinyacapp, PID: 9400
E/AndroidRuntime( 9400): java.lang.RuntimeException: Methods marked with @UiThread must be executed on the main thread. Current thread: STARTING
E/AndroidRuntime( 9400): at io.flutter.embedding.engine.FlutterJNI.ensureRunningOnMainThread(FlutterJNI.java:794)
E/AndroidRuntime( 9400): at io.flutter.embedding.engine.FlutterJNI.dispatchPlatformMessage(FlutterJNI.java:684)
E/AndroidRuntime( 9400): at io.flutter.embedding.engine.dart.DartMessenger.send(DartMessenger.java:80)
E/AndroidRuntime( 9400): at io.flutter.embedding.engine.dart.DartExecutor.send(DartExecutor.java:174)
E/AndroidRuntime( 9400): at io.flutter.view.FlutterNativeView.send(FlutterNativeView.java:144)
E/AndroidRuntime( 9400): at io.flutter.plugin.common.EventChannel$IncomingStreamRequestHandler$EventSinkImplementation.success(EventChannel.java:226)
...

只有我找到的信息在这里
https://github.com/flutter/flutter/issues/34993

是的,这里有一个解决方案
https://github.com/flutter/flutter/issues/34993#issue-459900986

但这对我来说似乎开销太大,因为我不想创建新的 handler对于我的每个 Activity

还有其他解决方案吗?

最佳答案

执行与上述建议解决方案相同的操作,但仅将其用于特定事件。

创建 ui 处理程序对象

public class BitcoinWalletPlugin implements MethodCallHandler, ... {

private Handler uiThreadHandler = new Handler(Looper.getMainLooper());

@Override
public void onListen(Object o, EventChannel.EventSink eventSink) {
switch (this.channel) {
...
case CHANNEL_NAME:
// before
// bitcoinWallet.setOnStartupListener(() -> eventSink.success(true));

// after
bitcoinWallet.setOnStartupListener(() -> uiThreadHandler.post(() -> eventSink.success(true)));
break;
}
}

}

关于android - flutter 插件 : "Methods marked with @UiThread must be executed on the main thread.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57447702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com