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;
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>();
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();
}
updateProvidersForPackageLocked(cn.getPackageName(), removedProviders);
}
}
- saveStateAsync();
+ saveStateLocked();
}
}
}
providersModified |= addProvidersForPackageLocked(pkgName);
}
}
- saveStateAsync();
+ saveStateLocked();
}
} else {
Bundle extras = intent.getExtras();
ensureStateLoadedLocked();
for (String pkgName : pkgList) {
providersModified |= removeProvidersForPackageLocked(pkgName);
- saveStateAsync();
+ saveStateLocked();
}
}
}
private void ensureStateLoadedLocked() {
if (!mStateLoaded) {
- loadAppWidgetListLocked();
+ loadAppWidgetList();
loadStateLocked();
mStateLoaded = true;
}
host.instances.add(id);
mAppWidgetIds.add(id);
- saveStateAsync();
+ saveStateLocked();
if (DBG) log("Allocating AppWidgetId for " + packageName + " host=" + hostId
+ " id=" + appWidgetId);
return appWidgetId;
AppWidgetId id = lookupAppWidgetIdLocked(appWidgetId);
if (id != null) {
deleteAppWidgetLocked(id);
- saveStateAsync();
+ saveStateLocked();
}
}
}
Host host = lookupHostLocked(callingUid, hostId);
if (host != null) {
deleteHostLocked(host);
- saveStateAsync();
+ saveStateLocked();
}
}
}
}
}
if (changed) {
- saveStateAsync();
+ saveStateLocked();
}
}
}
// schedule the future updates
registerForBroadcastsLocked(p, getAppWidgetIds(p));
- saveStateAsync();
+ saveStateLocked();
}
} finally {
Binder.restoreCallingIdentity(ident);
} else {
mPackagesWithBindWidgetPermission.remove(packageName);
}
- saveStateAsync();
}
+ saveStateLocked();
}
// Binds to a specific RemoteViewsService
}
}
- 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);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, id.appWidgetId);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_OPTIONS, id.options);
mContext.sendBroadcastAsUser(intent, new UserHandle(mUserId));
- saveStateAsync();
+ saveStateLocked();
}
}
}
}
- void loadAppWidgetListLocked() {
+ void loadAppWidgetList() {
Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
try {
List<ResolveInfo> broadcastReceivers = mPm.queryIntentReceivers(intent,