私のアクティビティは、アプリの周りのハンドラーをサービスのワーカー スレッドと共有します。スレッドはハンドラを使用して sendMessage() アクティビティを処理するには handleMessage() を使用します
アクティビティはバックグラウンド Android で終了し、戻ってくると再び開始されます。
アクティビティはサービスの静的メソッドを呼び出して、サービス中のスレッドの最後のステータス (最後の sendMessage() が何であったか) をチェックします。サービス スレッドの最後のメッセージに基づいて UI ステータスを初期化できるようにするため
Message m = SyncService.lastSyncMessage();
何らかの理由で、メッセージ m 内のバンドルが有効な場合 (キーと値のペアが含まれる) と、キーと値が存在しない場合があります。
ハンドラ経由で UI にメッセージを転送するスレッド側のコードは次のようになります。
Handler uiHandler = UIGlobals.getHandler();
Message msg = uiHandler.obtainMessage();
Bundle msgBundle = new Bundle();
msgBundle.putInt("status", syncEv.status.ordinal());
msgBundle.putString("param", syncEv.param);
msg.setData(msgBundle);
if(uiHandler.sendMessage(msg))
{
lastMessage = msg;
}
サービスの静的メソッド
public static Message lastSyncMessage()
{
return lastMessage;
}