Handler和消息处理
上节中提到,不同线程间如何通信,Handler就是一个易用的方案。如果把各个线程比作各干各活的工人,Handler就像是个中间人,负责把各个工人传来的消息进行处理,并有权操作UI线程中的组件,比如更新TextView的文字(非UI线程是不能操作的)。“工人”如何给Handler发一条消息?实现起来很简单,比如网络请求处理成功以后:
private final int NETWORK_PROCESS_OK = 1;//定义一个数字代号代表网络处理成功
private final int NETWORK_PROCESS_FAIL = 0; //代表网络处理失败
Message msg = handler.obtainMessage();//需要保证此时Handler的实例handler已经实例化不为空。
msg.what= NETWORK_PROCESS_OK;
msg.sendToTarget();
//失败以后也可以传回原因:
Message msg = handler.obtainMessage();
msg.what= NETWORK_PROCESS_FAIL;
msg.obj=reason;//reason一般是String,但可以是任何Object
msg.sendToTarget();
而Handler接收到消息后的处理一般如下:
handler = new Handler(){
public void handleMessage(Message msg) {
switch (msg.what) {
case NETWORK_PROCESS_OK:
textview.setText("处理成功!");
break;
case NETWORK_PROCESS_FAIL:
textview.setText("处理失败!原因:" + msg.obj.toString());
break;
}
};
};
3.3.4 Activity间的跳转
Activity间使用Intent类进行跳转和数据传输,具体如下:
Intent intent = new Intent(this,TargetActivity.class);//this是一个Activity对象
intent.putExtra(“param1”,paramString1);//通过intent传送额外数据,可以在目标Activity中,使用getIntent()获取传入的intent对象,利用该intent对象的getStringExtra()接受传入的String类型参数,当然也有其它类型的,此处不列举。
startActivity(intent);
值得注意的是,Intent所能传输的数据容量是有上限的,过多的数据不建议使用Intent进行传输。
标签:NETWORK,05,十三,2023.03,PROCESS,Handler,intent,msg,Intent From: https://www.cnblogs.com/xiao-hong111/p/17181873.html