/ *
*、ハンドラクラスによって、スレッドのメッセージキューにメッセージを送る
*各オブジェクトがハンドラールーパーメッセージキューは、オブジェクトとオブジェクトました
* /
公共ハンドラ(コールバックコールバック、非同期ブール){
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)を;
}
}