如何在Android主线程上运行React Native模块方法

3

在iOS上,我们可以使用几行代码确保自定义React Native模块中的方法在主线程上执行:

- (dispatch_queue_t)methodQueue {
  return dispatch_get_main_queue();
}

在Android上正确的方法是什么?

2个回答

4

遵循官方文档。

“本地模块不应对其被调用的线程做出任何假设,因为当前分配可能会在未来更改。如果需要阻塞调用,则应将繁重的工作调度到内部管理的工作线程,并从那里分发任何回调。”

如果您想从主线程运行代码,则应使用android中的Handler类。

Handler handler = new Handler(context.getMainLooper()); 
handler.post(new Runnable(){ // Code that needs to be run on the main thread. })

如何从另一个线程运行主线程中的代码?


谢谢您的回复!有没有办法在主线程上运行整个模块,或者我需要在每个方法内部创建一个处理程序? - David Jones
每个方法中都很遗憾 - anthony willis muñoz

2
使用提供的工具:
import com.facebook.react.bridge.UiThreadUtil

UiThreadUtil.runOnUiThread { 
// your code here
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接