【发布时间】:2013-01-03 17:13:21
【问题描述】:
关于 Java Andriod 处理程序:
handler.post(new Runnable(){
public void run() {
// do stuff
}
});
据我了解,这将在处理程序实例化的任何线程上运行。所以让我们说在Android中我在主线程上实例化处理程序,那么我的问题是runnable有什么意义?您将任务添加到主 UI 线程的消息队列中,为什么不跳过可运行并创建一个方法,因为您已经在主线程上。我见过程序员这样做,我想知道为什么?
我知道我们可以做Thread genThread = new Thread(new myRunnable());,但我想知道主线程上是否有 Runnable 的任何值。
【问题讨论】:
-
handler.post 可以从任何线程调用,即使它是在 ui 线程上实例化的。
-
在资源和性能方面,使用 handler.obtainMessage() 和 .sendMessage 比每次动态创建一个新的可运行对象要好得多。
标签: java android thread-safety runnable