runOnUiThread(new Runnable(){
@Override
public void run() {
System.out.println("print out from runOnUIThread.");
}
});
System.out.println("print out in main thread.");
**Output:**
print out from runOnUIThread.
print out in main thread.
基本上runOnUiThread
将在后台线程中使用,我只测试这样做。
上述代码在Activity
onCreate
方法中执行。
从输出结果不是我所期望的。我在想,因为runOnUiThread
将runnable
块发布到主线程,并且当前的执行上下文已经在主线程中,所以runOnUiThread
应该在“在主线程中打印出”之后安排,但为什么结果不显示像那?我是否错误地解释了它?任何人都可以解释一下吗?
编辑:
哦,我应该首先阅读API。不管怎样,为什么这让我困惑,是因为,在iOS上,类似的机制不同的表现:
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"Main thread from Dispatch.");
});
NSLog(@"Main thread.");
的上述反向输出。
那么,你实际上在后台线程上使用'runOnUiThread()'?如果不是,那么该方法将简单地在当前主线程上运行'Runnable'的'run()'方法。 – Luksprog