私のアプリケーションでは、バックグラウンドスレッドで実行する必要があるコンポーネント間で共有されるいくつかの操作に対して、HandlerThread
を使用しています。ほとんどの場合、このスレッドは待機状態になります。HandlerThreadを終了する必要がありますか?
HandlerThread
を実行中(待機中)のままアプリケーションに送信し、必要に応じてメッセージを送信できますが、HandlerThread.getLooper().quit()
で終了しないでください。これは、すべてのアプリケーションコンポーネントが破棄された後でも、このHandlerThread
が待機状態にあり続けることを意味します。
当初、これは私にとって大きなノーと思われました。私は間違いなくやりたいことですが、今は分かりません。 AndroidがCPU時間やメモリを解放する必要があるように私のプロセスを殺すと、このスレッドは私のUIスレッドと共に終了します。さらに、スレッドは待機しているので、CPU時間を消費することはありません。それを超えて、私のアプリケーションは多くのものを利用しています。AsyncTasks
、私はスレッドプールを利用しています。私の理解では、AsyncTask
は、アプリケーションライフサイクルコールバック(プール内のスレッドは使用されていないときに待機しているだけです)には準拠していないThreadPoolExecutor
を利用しています。
複数のアプリケーションコンポーネントにまたがってHandlerThread
を使用することはできますか?使用しないときには、ひどい悪影響を被りません。
を使用して検討する必要がありますおそらくアプリをクラッシュさせるでしょう。 –