flutter-MethodChannel的后台侦听器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flutter-MethodChannel的后台侦听器相关的知识,希望对你有一定的参考价值。
我的应用程序将文件发送到ftp服务器。我正在通过MethodChannel在android上使用Java发送文件。
这些部分可以在单线程中完成所有工作。但是我想使用AsyncTask(java)和背景发送文件。
此外,我还需要使用MethodChannel将文件上传结果发送到Flutter。
我该怎么做?我尝试在AsyncTask的doInBackground上使用MethodChannel.Result,但它给了我这个错误:
Caused by: java.lang.RuntimeException: Methods marked with @UiThread must be executed on the main thread. Current thread: AsyncTask #2
答案
因此,解决“ @UiThread的错误必须在主线程上执行。”
我用过这个,
runOnUiThread(new Runnable()
@Override
public void run()
//call the methodChannel.invokeMethod here to avoid @UiThread exception
);
[我还实现了一个新的MethodChannel和一个后台类,用于始终与后台的本机通信。
class NativeBackground
final methodChannel = MethodChannel('your.apps.channel/background');
static NativeBackground _instance;
factory NativeBackground() => _instance ? ? = NativeBackground._();
NativeBackground._()
handlePlatformChannelMethods();
Future <void> handlePlatformChannelMethods() async
methodChannel.setMethodCallHandler((methodCall)
print('NativeChanell background...');
print(methodCall.method + '(' + methodCall.arguments + ')');
);
您可以在应用程序的第一个build()方法上使用该NativeBackground类进行初始化。
以上是关于flutter-MethodChannel的后台侦听器的主要内容,如果未能解决你的问题,请参考以下文章
java.lang.RuntimeException: RESTEASY013050: RESTeasy Provider Factory 为空,您是不是配置了 ResteasyBootstrap 侦