From d3cd359122348ebc72fcf699de871ad084908622 Mon Sep 17 00:00:00 2001 From: Christopher Tate Date: Mon, 1 Feb 2010 15:31:09 -0800 Subject: [PATCH] Streamline: use Messages sent to a Handler subclass instead of posting Runnables Change-Id: I0ecbd2145300962839c0f87b761768a3bca4f010 --- core/java/android/backup/RestoreSession.java | 72 ++++++++------------ 1 file changed, 28 insertions(+), 44 deletions(-) diff --git a/core/java/android/backup/RestoreSession.java b/core/java/android/backup/RestoreSession.java index a884793ab7af9..6b35fe87fdffc 100644 --- a/core/java/android/backup/RestoreSession.java +++ b/core/java/android/backup/RestoreSession.java @@ -21,6 +21,7 @@ import android.backup.RestoreObserver; import android.backup.RestoreSet; import android.content.Context; import android.os.Handler; +import android.os.Message; import android.os.RemoteException; import android.util.Log; @@ -116,61 +117,44 @@ public class RestoreSession { final Handler mHandler; final RestoreObserver mAppObserver; + static final int MSG_RESTORE_STARTING = 1; + static final int MSG_UPDATE = 2; + static final int MSG_RESTORE_FINISHED = 3; + RestoreObserverWrapper(Context context, RestoreObserver appObserver) { - mHandler = new Handler(context.getMainLooper()); + mHandler = new Handler(context.getMainLooper()) { + @Override + public void handleMessage(Message msg) { + switch (msg.what) { + case MSG_RESTORE_STARTING: + mAppObserver.restoreStarting(msg.arg1); + break; + case MSG_UPDATE: + mAppObserver.onUpdate(msg.arg1); + break; + case MSG_RESTORE_FINISHED: + mAppObserver.restoreFinished(msg.arg1); + break; + } + } + }; mAppObserver = appObserver; } - // Wrap the IRestoreObserver -> RestoreObserver callthrough in Runnables - // posted to the app's main thread looper. - class RestoreStartingRunnable implements Runnable { - int mNumPackages; - - RestoreStartingRunnable(int numPackages) { - mNumPackages = numPackages; - } - - public void run() { - mAppObserver.restoreStarting(mNumPackages); - } - } - - class OnUpdateRunnable implements Runnable { - int mNowRestoring; - - OnUpdateRunnable(int nowRestoring) { - mNowRestoring = nowRestoring; - } - - public void run() { - mAppObserver.onUpdate(mNowRestoring); - } - } - - class RestoreFinishedRunnable implements Runnable { - int mError; - - RestoreFinishedRunnable(int error) { - mError = error; - } - - public void run() { - mAppObserver.restoreFinished(mError); - } - } - - // The actual redirection code is quite simple using just the - // above Runnable subclasses + // Binder calls into this object just enqueue on the main-thread handler public void restoreStarting(int numPackages) { - mHandler.post(new RestoreStartingRunnable(numPackages)); + mHandler.sendMessage( + mHandler.obtainMessage(MSG_RESTORE_STARTING, numPackages, 0)); } public void onUpdate(int nowBeingRestored) { - mHandler.post(new OnUpdateRunnable(nowBeingRestored)); + mHandler.sendMessage( + mHandler.obtainMessage(MSG_UPDATE, nowBeingRestored, 0)); } public void restoreFinished(int error) { - mHandler.post(new RestoreFinishedRunnable(error)); + mHandler.sendMessage( + mHandler.obtainMessage(MSG_RESTORE_FINISHED, error, 0)); } } }