【发布时间】:2011-09-26 10:34:04
【问题描述】:
我的应用程序使用HandlerThread 进行一些跨组件共享的操作,这些操作需要在后台线程上运行。大多数情况下,该线程将处于等待状态。
我可以让这个HandlerThread 在我的应用程序中运行(等待),在必要时向它发送消息,但从不通过HandlerThread.getLooper().quit() 退出它吗?这可能意味着这个HandlerThread 将继续处于等待状态,即使在我的所有应用程序组件都被销毁之后。
起初,这对我来说似乎是一个很大的拒绝——我绝对不想这样做——但我现在不确定。当 Android 杀死我的进程时,就像它需要释放 CPU 时间或内存时一样,它会结束这个线程以及我的 UI 线程。此外,线程将等待,因此不会消耗任何 CPU 时间。除此之外,我的应用程序使用了许多AsyncTasks,我知道它们使用了一个线程池。据我了解,AsyncTask 使用了ThreadPoolExecutor,它不遵循任何应用程序生命周期回调(池中的线程在不使用时,只是坐等)。
所以我的问题是,我能否在多个应用程序组件中使用 HandlerThread,从不(或很少)退出它,并在不使用时让它等待,而不会遭受可怕的不良影响?
【问题讨论】:
标签: android multithreading handler