在SO中阅读许多overkilled,overcomplicated解决方案,以获得如此简单的问题,如何从工作线程访问主线程,以及在其上执行一些代码。
在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
});
});
答案 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
}
});
希望这有帮助