我想知道什么时候应该使用handler.post(runnable);
我什么时候应该使用new Thread(runnable).start();
Handler 的开发人员文档中提到了这一点:
导致 Runnable r 添加到消息队列中。可运行的
将在该处理程序所附加的线程上运行。
这是否意味着如果我写在onCreate()
of Activity
class:
Handler handler = new Handler();
handler.post(runnable);
那么runnable会在单独的线程中还是在Activity的线程中被调用?
你应该使用Handler.post()
每当你想在 UI 线程上执行操作时。
假设您想更改TextView
回调中的文本。因为回调不在 UI 线程上运行,所以您应该使用Handler.post()
.
在 Android 中,与许多其他 UI 框架一样,UI 元素(小部件)只能从 UI 线程进行修改。
另请注意,术语“UI 线程”和“主线程”通常可以互换使用。
编辑:长时间运行的任务的示例:
mHandler = new Handler();
new Thread(new Runnable() {
@Override
public void run () {
// Perform long-running task here
// (like audio buffering).
// You may want to update a progress
// bar every second, so use a handler:
mHandler.post(new Runnable() {
@Override
public void run () {
// make operation on the UI - for example
// on a progress bar.
}
});
}
}).start();
当然,如果您要执行的任务非常长并且存在用户可能同时切换到其他应用程序的风险,您应该考虑使用Service http://developer.android.com/guide/components/services.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)