自定义工作线程 HandlerThread + new Handler(handlerThread.getLooper()) 的写法如下:
HandlerThread handlerThread = new HandlerThread("Data");
handlerThread.start();
Handler handler = new Handler(handlerThread.getLooper());
HandlerThread handlerThread = new HandlerThread("Data");
handlerThread.start();
创建了一个名为Data的新线程,并且这个线程是一个 HandlerThread
,它内部已经初始化了 Looper。当调用 handlerThread.start()
时,该线程会启动并开始其消息循环(Looper.loop())
Handler handler = new Handler(handlerThread.getLooper());
创建了一个与该自定义工作线程相关联的 Handler。当通过 handler 发送的消息或 Runnable 将在 handlerThread
线程中执行,而不是在主线程(UI线程)执行。
HandlerThread介绍
HandlerThread
是一个继承自 Thread 的类,它在其内部初始化了一个 Looper,因此它是一个可以运行消息循环的线程。这意味着你在 HandlerThread 中创建的 Handler 可以处理其内部消息队列中的消息,而这些消息的处理将在 HandlerThread 所代表的工作线程中完成,而不是在主线程。
HandlerThread的主要作用:
HandlerThread + Handler 结合使用通常是在需要执行耗时任务(例如文件读写、大量计算、长时间等待的网络请求等),为了避免阻塞UI线程,会创建一个工作线程(如使用 HandlerThread
类)。这样可以在该线程上处理耗时操作,而不会影响应用的响应性和流畅性