android 解决子线程进行UI操作

Android确实不允许在子线程中进行UI操作的,但我们有时必须在子线程里去执行一些耗时的任务,然后根据任务的执行结果来更新相应的UI控件。

Android提供了一套异步消息处理机制,可以解决子线程中进行UI操作的问题。

例子:

public class MainActivity extends AppCompatActivity {

    public static  final int UPDATE_TEXT = 1;

    private TextView textView;

    private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case UPDATE_TEXT:
textView.setText("chenzquan");
}
}
}; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); textView = findViewById(R.id.textView);
Button button = findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
Message message = new Message();
message.what = UPDATE_TEXT;
handler.sendMessage(message);
}
}).start(); }
});
}
}

还可以使用AsyncTask工具

AyncTask背后的实现原理也是基于异步消息处理机制

上一篇:HYSBZ 2243 染色 (树链拆分)


下一篇:Hadoop集群搭建过程中ssh免密码登录(二)