问1:Handler问题三连:是什么?有什么用?为什么要用Handler,不用行不行?
答:Android定义的一套 子线程与主线程间通讯 的 消息传递机制 ;
把子线程中的 UI更新信息,传递 给主线程(UI线程),以此完成UI更新操作;
不行,Handler是android在设计之初就封装了一套消息创建、传递、处理;
问2:真的只能在主(UI)线程中更新UI吗?
答:建议在主线程中更新UI,如果你说我偏不!我就要子线程更新UI,行,阔以,
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_handler_test);
new Thread(new Runnable() {
@Override
public void run() {
Looper.prepare();
AlertDialog.Builder builder = new AlertDialog.Builder(HandlerTestActivity.this);
builder.setTitle("请回答");
builder.setMessage("你觉得我好看吗??");
builder.setPositiveButton("当然是好看了", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.setNegativeButton("我觉得不好看", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
Looper.loop();
}
}).start();
}
Screenshot_1596791014.png
喏,这不就在主线程中更新了UI了嘛,不过呢,不建议这样做。
网友评论