Android中Handler的使用,一般都在UI主线程中执行,因此在Handler接收消息后,处理消息时,不能做一些很耗时的操作,否则将出现ANR错误。
Android中专门提供了HandlerThread类,来解决该类问题。HandlerThread类是一个线程专门处理Hanlder的消息,依次从Handler的队列中获取信息,逐个进行处理,保证安全,不会出现混乱引发的异常。HandlerThread继承于Thread,所以它本质就是个Thread。与普通Thread的差别就在于,它有个Looper成员变量
(1)
private HandlerThread reloadHandlerThread;
private ReloadHandler reloadHandler;
class ReloadHandler extends Handler{
public ReloadHandler(Looper looper) {
super(looper);
}
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
}
}
(2)
reloadHandlerThread = new HandlerThread("reloadHandlerThread");
reloadHandlerThread.start();
reloadHandler=new ReloadHandler(reloadHandlerThread.getLooper());
即可在主线程中开启一个子线程来接收消息处理。