我一直在查看 HandlerThread 类,因为我最初使用的是一个简单的线程和处理程序,但是在android中出现了一个带有 NetworkOnMainThreadException 的裁剪器。
我似乎无法理解如何将诸如套接字之类的东西引入到 HandlerThread 中,您可以在其中运行阻塞代码。但是你不能用 HandlerThread 做到这一点,因为你不应该覆盖 run 因为那是 looper 所在的地方。
而且我不能通过消息调用 HandlerThread 来开始侦听套接字,因为它会阻止传递给它的任何其他消息。
那么这个 HandlerThread 类是为非阻塞任务设计的吗?因为我似乎无法理解如何使用这样的线程,所以它可以在套接字上侦听但可以处理请求,就像我从主 UI 线程创建普通线程时一样
我可以在普通线程中调用 Looper.prepare() 和 Looper.loop() 在运行中,然后将代码放在这两行之间(通过检查来创建处理程序)但是我遇到了与通信的问题这个新线程,消息不会传递到线程中。
那么我该如何去创建可以使用处理程序相互通信并执行诸如使用套接字之类的任务的线程。
请我不是在寻找使用 ASyncTask 的评论,我想知道我自己如何使用线程,以便线程可以相互通信