diff options
Diffstat (limited to 'src/com/android/launcher2/LauncherApplication.java')
-rw-r--r-- | src/com/android/launcher2/LauncherApplication.java | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/com/android/launcher2/LauncherApplication.java b/src/com/android/launcher2/LauncherApplication.java index 03fe5626d..ee6006c5b 100644 --- a/src/com/android/launcher2/LauncherApplication.java +++ b/src/com/android/launcher2/LauncherApplication.java @@ -17,13 +17,74 @@ package com.android.launcher2; import android.app.Application; +import android.content.BroadcastReceiver; +import android.content.ContentResolver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.database.ContentObserver; +import android.os.Handler; import dalvik.system.VMRuntime; public class LauncherApplication extends Application { + public static final LauncherModel sModel = new LauncherModel(); + @Override public void onCreate() { VMRuntime.getRuntime().setMinimumHeapSize(4 * 1024 * 1024); super.onCreate(); + + // Register intent receivers + IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED); + filter.addAction(Intent.ACTION_PACKAGE_REMOVED); + filter.addAction(Intent.ACTION_PACKAGE_CHANGED); + filter.addDataScheme("package"); + registerReceiver(mApplicationsReceiver, filter); + + // Register for changes to the favorites + ContentResolver resolver = getContentResolver(); + resolver.registerContentObserver(LauncherSettings.Favorites.CONTENT_URI, true, + mFavoritesObserver); + } + + /** + * There's no guarantee that this function is ever called. + */ + @Override + public void onTerminate() { + super.onTerminate(); + + unregisterReceiver(mApplicationsReceiver); + + ContentResolver resolver = getContentResolver(); + resolver.unregisterContentObserver(mFavoritesObserver); + } + + /** + * Receives notifications when applications are added/removed. + */ + private final BroadcastReceiver mApplicationsReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + sModel.onReceiveIntent(LauncherApplication.this, intent); + } + }; + + /** + * Receives notifications whenever the user favorites have changed. + */ + private final ContentObserver mFavoritesObserver = new ContentObserver(new Handler()) { + @Override + public void onChange(boolean selfChange) { + // TODO: lockAllApps(); + sModel.setWorkspaceDirty(); + sModel.startLoader(LauncherApplication.this, false); + } + }; + + LauncherModel setLauncher(Launcher launcher) { + sModel.initialize(launcher); + return sModel; } } |