①使用Activity中的runOnUiThread(Runnable)
②使用Handler中的post(Runnable)
在创建Handler对象时,必须先通过Context的getMainLooper()获取到主循环器(main looper)
例:new Handler(getMainLooper()).post(action)
③使用Handler中的sendMessage(Message)
例:
1.先创建Handler对象
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
//更新UI的操作
String text = (String) msg.obj;
Toast.makeText(MainActivity.this, text, Toast.LENGTH_SHORT).show();
}
};
2.通过Handler发送Message
Message msg = handler.obtainMessage();
msg.obj = "上下文包装器\nContext Wrapper";
handler.sendMessage(msg);
其中,handler.obtainMessage()比直接创建Message(new Message())更有效率
也可替换为Message.obtain()
总结:
①最简便,但是依赖于Activity
②稍复杂,与①类似,依赖于Context
③最复杂,但是不依赖于上下文