使用 Handler
Handler 收到 message 时处理逻辑所在的线程由创建时所在的线程决定或者可以通过制定 Handler 的 Looper 来决定(Looper 属于哪个线程,则代码在哪个线程执行)
因此,有两种方式实现 Handler 在主线程执行逻辑
方法一
在主线程创建一个 Handler(mHandler),然后在其他线程通过 mHandler 发消息
方法二
new Handler(context.getMainLooper()).post(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(context, WebActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(WebActivity.EXTRA_URL, url);
context.startActivity(intent);
}
});
使用 Activity 的 Context
Activity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
//更新UI
imageView.setImageBitmap(bitmap);
}
});
使用 View View.post(Runnable r)
imageView.post(new Runnable() {
@Override
public void run() {
imageView.setImageBitmap(bitmap);
}
});