android技术

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()即可

上一篇 下一篇

猜你喜欢

热点阅读