Handler.post()
每当您想在 UI 线程上执行操作时都应该使用。
因此,假设您想更改TextView
回调中的 a 文本。因为回调不在 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。