Android HandlerThread的使用
2021-11-23 本文已影响0人
背锅TV丶伴奏大师
android开发时我们时常会遇到处理大量数据的情况,为了不让主线程卡掉,我们一般会把这个处理过程放在子线程里面操作,所以HandlerThread就派上用场了,当然了还有其他n种方法(AsyncTask,线程池等等)可以实现。
private HandlerThread mHandlerThread;
private Handler mCheckMsgHandler;
private void initBackThread(){
// 1.创建HandlerThread
mHandlerThread = new HandlerThread("check-message-coming");
// 2.启动HandlerThread线程
mHandlerThread.start();
// 3.创建Handler对象绑定该线程的Looper
mCheckMsgHandler=new Handler(mHandlerThread.getLooper(),new ChildCallback());
mCheckMsgHandler.sendEmptyMessage(0);
}
/**
* 该callback运行于子线程
*/
class ChildCallback implements Handler.Callback {
@Override
public boolean handleMessage(Message msg) {
//在子线程中进行大量数据的处理,此方法根据你的具体业务实现
handleLargeData();
//通知主线程去更新UI
runOnUiThread(new Runnable() {
@Override
public void run() {
//刷新UI
refreshView();
}
});
return false;
}
}
@Override
protected void onPause() {
super.onPause();
if(mCheckMsgHandler!=null){
mCheckMsgHandler.removeMessages(0);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if(mHandlerThread!=null){
mHandlerThread.quit();
}
}
最后在oncreate中调用initBackThread()即可