Revert "Pushing state persistence to a background thread"

This reverts commit 039206a9b4

Change-Id: I30fa07bf55a489562831b6334768b28bed638ef8
This commit is contained in:
Adam Cohen
2012-11-01 15:12:07 -07:00
committed by Android (Google) Code Review
parent 039206a9b4
commit b6f83374cc

View File

@@ -41,10 +41,7 @@ import android.net.Uri;
import android.os.Binder;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.IBinder;
import android.os.Looper;
import android.os.Process;
import android.os.RemoteException;
import android.os.SystemClock;
@@ -183,8 +180,6 @@ class AppWidgetServiceImpl {
boolean mStateLoaded;
int mMaxWidgetBitmapMemory;
private final Handler mSaveStateHandler;
// These are for debugging only -- widgets are going missing in some rare instances
ArrayList<Provider> mDeletedProviders = new ArrayList<Provider>();
ArrayList<Host> mDeletedHosts = new ArrayList<Host>();
@@ -194,10 +189,6 @@ class AppWidgetServiceImpl {
mPm = AppGlobals.getPackageManager();
mAlarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
mUserId = userId;
HandlerThread handlerThread = new HandlerThread("AppWidgetServiceImpl -- Save state");
handlerThread.start();
mSaveStateHandler = new Handler(handlerThread.getLooper());
computeMaximumWidgetBitmapMemory();
}
@@ -245,7 +236,7 @@ class AppWidgetServiceImpl {
updateProvidersForPackageLocked(cn.getPackageName(), removedProviders);
}
}
saveStateAsync();
saveStateLocked();
}
}
}
@@ -295,7 +286,7 @@ class AppWidgetServiceImpl {
providersModified |= addProvidersForPackageLocked(pkgName);
}
}
saveStateAsync();
saveStateLocked();
}
} else {
Bundle extras = intent.getExtras();
@@ -306,7 +297,7 @@ class AppWidgetServiceImpl {
ensureStateLoadedLocked();
for (String pkgName : pkgList) {
providersModified |= removeProvidersForPackageLocked(pkgName);
saveStateAsync();
saveStateLocked();
}
}
}
@@ -420,7 +411,7 @@ class AppWidgetServiceImpl {
private void ensureStateLoadedLocked() {
if (!mStateLoaded) {
loadAppWidgetListLocked();
loadAppWidgetList();
loadStateLocked();
mStateLoaded = true;
}
@@ -441,7 +432,7 @@ class AppWidgetServiceImpl {
host.instances.add(id);
mAppWidgetIds.add(id);
saveStateAsync();
saveStateLocked();
if (DBG) log("Allocating AppWidgetId for " + packageName + " host=" + hostId
+ " id=" + appWidgetId);
return appWidgetId;
@@ -454,7 +445,7 @@ class AppWidgetServiceImpl {
AppWidgetId id = lookupAppWidgetIdLocked(appWidgetId);
if (id != null) {
deleteAppWidgetLocked(id);
saveStateAsync();
saveStateLocked();
}
}
}
@@ -466,7 +457,7 @@ class AppWidgetServiceImpl {
Host host = lookupHostLocked(callingUid, hostId);
if (host != null) {
deleteHostLocked(host);
saveStateAsync();
saveStateLocked();
}
}
}
@@ -485,7 +476,7 @@ class AppWidgetServiceImpl {
}
}
if (changed) {
saveStateAsync();
saveStateLocked();
}
}
}
@@ -601,7 +592,7 @@ class AppWidgetServiceImpl {
// schedule the future updates
registerForBroadcastsLocked(p, getAppWidgetIds(p));
saveStateAsync();
saveStateLocked();
}
} finally {
Binder.restoreCallingIdentity(ident);
@@ -665,8 +656,8 @@ class AppWidgetServiceImpl {
} else {
mPackagesWithBindWidgetPermission.remove(packageName);
}
saveStateAsync();
}
saveStateLocked();
}
// Binds to a specific RemoteViewsService
@@ -903,20 +894,6 @@ class AppWidgetServiceImpl {
}
}
private void saveStateAsync() {
mSaveStateHandler.post(mSaveStateRunnable);
}
private final Runnable mSaveStateRunnable = new Runnable() {
@Override
public void run() {
synchronized (mAppWidgetIds) {
ensureStateLoadedLocked();
saveStateLocked();
}
}
};
public void updateAppWidgetOptions(int appWidgetId, Bundle options) {
synchronized (mAppWidgetIds) {
options = cloneIfLocalBinder(options);
@@ -937,7 +914,7 @@ class AppWidgetServiceImpl {
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, id.appWidgetId);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_OPTIONS, id.options);
mContext.sendBroadcastAsUser(intent, new UserHandle(mUserId));
saveStateAsync();
saveStateLocked();
}
}
@@ -1238,7 +1215,7 @@ class AppWidgetServiceImpl {
}
}
void loadAppWidgetListLocked() {
void loadAppWidgetList() {
Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
try {
List<ResolveInfo> broadcastReceivers = mPm.queryIntentReceivers(intent,