1、当需要执行网络请求即文件读写等耗时任务时,需要开启一个子线程执行这些操作,子线程中的信息通过handle传递给主线程。
//在某一事件中开启一个子线程
new Thread(new Runnable() {
@Override
public void run() {
String stringFromNet= null;//在子线程中完成耗时任务;
try {
stringFromNet =getStringFromNet() ;
} catch (MalformedURLException e) {
throw new RuntimeException(e);
}
Message message=new Message();
message.what =0;//做一个标记
message.obj =stringFromNet;//子线程中完成的加载任务,将其传递给handle
myHandler.sendMessage(message);//将message发送给handle
}
}).start();
//接收信息
@SuppressLint("HandlerLeak")
public android.os.Handler myHandler = new Handler(Looper.myLooper()) {
@SuppressLint("HandlerLeak")
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
//做出判断,当接收到对应的标志信号时,执行相应程序
if(msg.what==0){
strFromart=(String)msg.obj;
tv_rev.setText(strFromart);
Toast.makeText(MainActivity.this,"获取来自XX的信息",Toast.LENGTH_SHORT).show();
}
}
};