如何从Java中的工作线程访问主线程?

时间:2016-09-16 22:20:30

标签: java multithreading

在SO中阅读许多overkilledovercomplicated解决方案,以获得如此简单的问题,如何从工作线程访问主线程,以及在其上执行一些代码。

在iOS dispatch_get_main_queue()方法中返回主线程。如何用Java?

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0UL), ^{
    //do background thread stuff

    dispatch_async(dispatch_get_main_queue(), ^{
        //update UI
    });
});

2 个答案:

答案 0 :(得分:1)

在Android中,您无法直接访问主线程(UI线程),但您可以在其上排队作业,因此您需要创建Handler并使用该处理程序发布作业({{1} })在主线程上。

以下是如何使用Runnable

UI Thread上发布的示例
Handler

以及评论中提到的@CommonsWare,还有另一种访问UI线程的方法:

  • 如果您有任何new android.os.Handler(Looper.getMainLooper()).post(new Runnable() { @Override public void run() { //Doing job here } }) 的实例,则可以使用View
  • 如果您拥有View.post(Runnable)的实例,则可以使用Activity

Btw访问Android中的主线程与Java桌面应用程序完全不同

答案 1 :(得分:-1)

在另一个主线程上运行代码:

runOnUiThread(new Runnable() {
        @Override
        public void run() {
           // Your code here
        }
});

希望这有帮助