我的应用程序使用HandlerThread
来执行一些需要在后台线程上运行的操作,这些操作在组件之间共享。大部分时间该线程将处于等待状态。
我可以让这个HandlerThread
保持运行(等待)在我的应用程序中,每当需要时向其发送消息,但从未通过HandlerThread.getLooper().quit()
退出它吗?这意味着即使所有应用程序组件都被销毁后,这个HandlerThread
仍将以其等待状态继续存在。
最初,这似乎是一个不能做的事情——我绝对不会这样做——但现在我不确定了。当Android杀死我的进程时,就像当它需要释放CPU时间或内存时一样,它将结束这个线程以及我的UI线程。此外,该线程将处于等待状态,因此不会消耗任何CPU时间。除此之外,我的应用程序使用了许多AsyncTasks
,我知道它们利用了线程池。据我所知,AsyncTask
利用ThreadPoolExecutor
,后者不遵循任何应用程序生命周期回调(不使用池中的线程,只需坐等)。
因此,我的问题是,我可以在多个应用程序组件之间使用HandlerThread
,从不(或很少)退出它,并在不使用时让它等待,而不会遭受可怕的副作用吗?