AndroidマルチスレッドのHandlerThread


HandlerThreadはThreadを継承し、彼はHandlerを使用することができるThreadであり、その実現も簡単であり、runメソッドでLooperを通過することである.prepare()を使用してメッセージキューを作成し、Looper.を使用します.loop()はメッセージループを開き、実際の使用でHandlerThreadでHandlerを作成できるようにします.HandlerThreadのrun法を以下に示す.
 @Override
    public void run() {
        mTid = Process.myTid();
        Looper.prepare();
        synchronized (this) {
            mLooper = Looper.myLooper();
            notifyAll();
        }
        Process.setThreadPriority(mPriority);
        onLooperPrepared();
        Looper.loop();
        mTid = -1;
    }

HandlerThreadの実現から見ると,通常のThreadとは著しい相違点がある.通常のThreadは主にrunメソッドで時間のかかるタスクを実行するために使用され、HandlerThreadは内部にメッセージキューを作成し、外部はHandlerのメッセージ方式でHandlerThreadに特定のタスクのみを要求することを通知する必要がある.HandlerThreadは、Androidでの具体的な使用シーンがIntentServiceである有用なクラスです.HandlerThreadのrun法は無限ループであるため,HandlerThreadを再利用する必要がないことが明らかになった場合,そのquitまたはquitSafely法によりスレッドの実行を終了することができる.