am 3003fb82: Merge change 3939 into donut

Merge commit '3003fb8214e512ee7b8eb62b10b7446177e0682c'

* commit '3003fb8214e512ee7b8eb62b10b7446177e0682c':
  Tweak thread priorities in Home to make first boot experience a little better.
This commit is contained in:
Android (Google) Code Review 2009-06-12 04:59:40 -07:00 committed by The Android Open Source Project
commit d16cd03e41
1 changed files with 38 additions and 27 deletions

View File

@ -126,7 +126,7 @@ public class LauncherModel {
mApplicationsLoaded = false; mApplicationsLoaded = false;
if (!isLaunching) { if (!isLaunching) {
startApplicationsLoader(launcher); startApplicationsLoader(launcher, false);
return false; return false;
} }
@ -148,19 +148,19 @@ public class LauncherModel {
} }
} }
private synchronized void startApplicationsLoader(Launcher launcher) { private synchronized void startApplicationsLoader(Launcher launcher, boolean isLaunching) {
if (DEBUG_LOADERS) d(LOG_TAG, " --> starting applications loader"); if (DEBUG_LOADERS) d(LOG_TAG, " --> starting applications loader");
stopAndWaitForApplicationsLoader(); stopAndWaitForApplicationsLoader();
mApplicationsLoader = new ApplicationsLoader(launcher); mApplicationsLoader = new ApplicationsLoader(launcher, isLaunching);
mApplicationsLoaderThread = new Thread(mApplicationsLoader, "Applications Loader"); mApplicationsLoaderThread = new Thread(mApplicationsLoader, "Applications Loader");
mApplicationsLoaderThread.start(); mApplicationsLoaderThread.start();
} }
synchronized void addPackage(Launcher launcher, String packageName) { synchronized void addPackage(Launcher launcher, String packageName) {
if (mApplicationsLoader != null && mApplicationsLoader.isRunning()) { if (mApplicationsLoader != null && mApplicationsLoader.isRunning()) {
startApplicationsLoader(launcher); startApplicationsLoader(launcher, false);
return; return;
} }
@ -186,7 +186,7 @@ public class LauncherModel {
synchronized void removePackage(Launcher launcher, String packageName) { synchronized void removePackage(Launcher launcher, String packageName) {
if (mApplicationsLoader != null && mApplicationsLoader.isRunning()) { if (mApplicationsLoader != null && mApplicationsLoader.isRunning()) {
dropApplicationCache(); // TODO: this could be optimized dropApplicationCache(); // TODO: this could be optimized
startApplicationsLoader(launcher); startApplicationsLoader(launcher, false);
return; return;
} }
@ -221,7 +221,7 @@ public class LauncherModel {
synchronized void updatePackage(Launcher launcher, String packageName) { synchronized void updatePackage(Launcher launcher, String packageName) {
if (mApplicationsLoader != null && mApplicationsLoader.isRunning()) { if (mApplicationsLoader != null && mApplicationsLoader.isRunning()) {
startApplicationsLoader(launcher); startApplicationsLoader(launcher, false);
return; return;
} }
@ -263,7 +263,7 @@ public class LauncherModel {
synchronized void syncPackage(Launcher launcher, String packageName) { synchronized void syncPackage(Launcher launcher, String packageName) {
if (mApplicationsLoader != null && mApplicationsLoader.isRunning()) { if (mApplicationsLoader != null && mApplicationsLoader.isRunning()) {
startApplicationsLoader(launcher); startApplicationsLoader(launcher, false);
return; return;
} }
@ -461,8 +461,10 @@ public class LauncherModel {
private volatile boolean mStopped; private volatile boolean mStopped;
private volatile boolean mRunning; private volatile boolean mRunning;
private final boolean mIsLaunching;
ApplicationsLoader(Launcher launcher) { ApplicationsLoader(Launcher launcher, boolean isLaunching) {
mIsLaunching = isLaunching;
mLauncher = new WeakReference<Launcher>(launcher); mLauncher = new WeakReference<Launcher>(launcher);
} }
@ -477,7 +479,10 @@ public class LauncherModel {
public void run() { public void run() {
mRunning = true; mRunning = true;
android.os.Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND); // Elevate priority when Home launches for the first time to avoid
// starving at boot time. Staring at a blank home is not cool.
android.os.Process.setThreadPriority(mIsLaunching ? Process.THREAD_PRIORITY_DEFAULT :
Process.THREAD_PRIORITY_BACKGROUND);
final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
@ -580,7 +585,7 @@ public class LauncherModel {
if (isLaunching && isDesktopLoaded()) { if (isLaunching && isDesktopLoaded()) {
if (DEBUG_LOADERS) d(LOG_TAG, " --> items loaded, return"); if (DEBUG_LOADERS) d(LOG_TAG, " --> items loaded, return");
if (loadApplications) startApplicationsLoader(launcher); if (loadApplications) startApplicationsLoader(launcher, true);
// We have already loaded our data from the DB // We have already loaded our data from the DB
launcher.onDesktopItemsLoaded(); launcher.onDesktopItemsLoaded();
return; return;
@ -607,7 +612,8 @@ public class LauncherModel {
if (DEBUG_LOADERS) d(LOG_TAG, " --> starting workspace loader"); if (DEBUG_LOADERS) d(LOG_TAG, " --> starting workspace loader");
mDesktopItemsLoaded = false; mDesktopItemsLoaded = false;
mDesktopItemsLoader = new DesktopItemsLoader(launcher, localeChanged, loadApplications); mDesktopItemsLoader = new DesktopItemsLoader(launcher, localeChanged, loadApplications,
isLaunching);
mDesktopLoaderThread = new Thread(mDesktopItemsLoader, "Desktop Items Loader"); mDesktopLoaderThread = new Thread(mDesktopItemsLoader, "Desktop Items Loader");
mDesktopLoaderThread.start(); mDesktopLoaderThread.start();
} }
@ -688,9 +694,12 @@ public class LauncherModel {
private final WeakReference<Launcher> mLauncher; private final WeakReference<Launcher> mLauncher;
private final boolean mLocaleChanged; private final boolean mLocaleChanged;
private final boolean mLoadApplications; private final boolean mLoadApplications;
private final boolean mIsLaunching;
DesktopItemsLoader(Launcher launcher, boolean localeChanged, boolean loadApplications) { DesktopItemsLoader(Launcher launcher, boolean localeChanged, boolean loadApplications,
boolean isLaunching) {
mLoadApplications = loadApplications; mLoadApplications = loadApplications;
mIsLaunching = isLaunching;
mLauncher = new WeakReference<Launcher>(launcher); mLauncher = new WeakReference<Launcher>(launcher);
mLocaleChanged = localeChanged; mLocaleChanged = localeChanged;
} }
@ -706,6 +715,8 @@ public class LauncherModel {
public void run() { public void run() {
mRunning = true; mRunning = true;
android.os.Process.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT);
final Launcher launcher = mLauncher.get(); final Launcher launcher = mLauncher.get();
final ContentResolver contentResolver = launcher.getContentResolver(); final ContentResolver contentResolver = launcher.getContentResolver();
final PackageManager manager = launcher.getPackageManager(); final PackageManager manager = launcher.getPackageManager();
@ -912,7 +923,7 @@ public class LauncherModel {
launcher.onDesktopItemsLoaded(); launcher.onDesktopItemsLoaded();
} }
}); });
if (mLoadApplications) startApplicationsLoader(launcher); if (mLoadApplications) startApplicationsLoader(launcher, mIsLaunching);
} }
if (!mStopped) { if (!mStopped) {