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的后台侦听器的主要内容,如果未能解决你的问题,请参考以下文章

Linux 网络侦错:无法联机原因分析

java.lang.RuntimeException: RESTEASY013050: RESTeasy Provider Factory 为空,您是不是配置了 ResteasyBootstrap 侦

开启andriod手机的adbd,进行无线adb调试

MLD协议测试——网络测试仪实操

MLD协议测试——网络测试仪实操

EBS Report开发案例