使用 HandlerThread
Android 提供了一个便捷的线程类 HandlerThread ,此类自带了一个Looper ,可以实现跨线程通信的功能(至少我是这么使用的 :)23333 )
使用方法
Step 1 :
当然是先创建一个此类对象了
HandlerThread mHandlerThread = new HandlerThread();
Step 2 :
在创建Handler前一定要先将 mHandlerThread.start()开启一个线程
mHandlerThread.start()
Step 3 :
创建一个Handler 给 mHandlerThread ,我们知道handler 最终处理Message时是在他构造方法中传入的Looper的所有者所在的线程,有点绕哈
简单的说, handler 关联的 Looper 是哪个线程的,handler就在哪个线程处理 Message
mHandlerThread.start();
Handler mHandler = new Handler (mHandlerThread.getLooper());
Step 4 :
就是Handler那一套,重写 handlerMessage ,发任务的线程 sendMessage
@override
public void handleMessage(Message msg) {
switch(msg.what){
case:
xxx
break;
}
}
//发任务的线程
mHandler.sendEmptyMessage(xxx);
注意使用后为了避免内存泄漏
手动清空一次message
retryLocationHandler.removeCallbacksAndMessages(null);