で、スレッドのメッセージキューハンドラクラスへのメッセージの送信

/ *
*、ハンドラクラスによって、スレッドのメッセージキューにメッセージを送る
*各オブジェクトがハンドラールーパーメッセージキューは、オブジェクトとオブジェクトました
* /
公共ハンドラ(コールバックコールバック、非同期ブール){
    IF(FIND_POTENTIAL_LEAKS){
        finalクラス<?拡張をハンドラ>クラース=はgetClass();
        IF((klass.isAnonymousClass()klass.isMemberClass ||()|| klass.isLocalClass())&&
                (klass.getModifiers()&Modifier.STATIC)== 0){
            ログ。 W(TAG、 "次の静的またはリークのハンドラ・クラスがあるべきであるが、発生する可能性があります" +
                klass.getCanonicalNameを());
        }
    }
    //ルーパーオブジェクト取得
    mLooper Looper.myLooper =()を、 
    IF(mLooper == NULL){。 ..}
    //メッセージキューを取得します
    mqueueを= mLooper.mQueue。  
    mCallback =コールバック。
    mAsynchronous =非同期。
}

/ *
*のSendMessage種々の方法、最終的には両方の呼び出し方法sendMessageAtTime()
* /
パブリックブールsendMessageAtTime(メッセージMSG、ロングuptimeMillis){
    メッセージキューキュー= mqueueを、
    IF(キュー== NULL){
        のRuntimeExceptionのRuntimeException新しい新E =(
                +この"mqueueをNOに呼び出されsendMessageAtTime()");
        Log.w( "ルーパー"、e.getMessage()、E);
        falseに復帰;
    }
    //キューにメッセージを追加
    リターンenqueueMessage(キュー、MSG、uptimeMillis ); 
}
    
/ *
*コールバックメッセージがnullでない場合、実行は、メッセージのメソッドをコールバック。、Runnableインタフェースたときにコールバック。
* 2.コールバックインターフェースハンドラがnullでない場合、メソッドコールバックインターフェースを行います。
* 3ハンドラのhandleMessage直接execute()メソッドです。
* /
ボイドDispatchMessageを公開(メッセージMSG){
    //コールバックインターフェースメッセージがnullでない、実行コールバックインターフェース
    IF(msg.callback = NULL!){
        handleCallback(MSG);
    } {他
        IF(!mCallback = NULL){
            //コールバックハンドラインターフェースがnullでない、インターフェースメソッドが実行
            IF(mCallback.handleMessage(MSG)){
                リターン;
            }
        }
        //メッセージ処理
        のhandleMessage(MSG)を; 
    }
}

公開された37元の記事 ウォン称賛10 ビュー10000 +

おすすめ

転載: blog.csdn.net/OneLinee/article/details/89300632
おすすめ