Streamline: use Messages sent to a Handler subclass instead of posting Runnables

Change-Id: I0ecbd2145300962839c0f87b761768a3bca4f010
This commit is contained in:
Christopher Tate
2010-02-01 15:31:09 -08:00
parent 2456248712
commit d3cd359122

View File

@@ -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));
}
}
}