当前位置: 代码迷 >> Android >> Launcher起步的流程图【AndroidICS4.0——>Launcher系列四】
  详细解决方案

Launcher起步的流程图【AndroidICS4.0——>Launcher系列四】

热度:35   发布时间:2016-05-01 12:44:22.0
Launcher启动的流程图【AndroidICS4.0——>Launcher系列四】

        先画一个Launche启动的流程图,虽然不是特别规范,但是勉强能看看,我也整理下Launcher的一系列的流程图,最近修改Launcher,又对Launcher加深了一些了解,

转载请标明出处:http://blog.csdn.net/wdaming1986/article/details/8267156

 

              大明图(1)

 

说明:loadWorkspaceFirst,这个是个boolean值,加入代码:

 

public void run() {            // Optimize for end-user experience: if the Launcher is up and // running with the            // All Apps interface in the foreground, load All Apps first. Otherwise, load the            // workspace first (default).            final Callbacks cbk = mCallbacks.get();            final boolean loadWorkspaceFirst = cbk != null ? (!cbk.isAllAppsVisible()) : true;            keep_running: {                // Elevate priority when Home launches for the first time to avoid                // starving at boot time. Staring at a blank home is not cool.                synchronized (mLock) {                    if (DEBUG_LOADERS) Log.d(TAG, "Setting thread priority to " +                            (mIsLaunching ? "DEFAULT" : "BACKGROUND"));                    android.os.Process.setThreadPriority(mIsLaunching                            ? Process.THREAD_PRIORITY_DEFAULT : Process.THREAD_PRIORITY_BACKGROUND);                }                // First Step                if (loadWorkspaceFirst) {                    if (DEBUG_LOADERS) Log.d(TAG, "step 1: loading workspace");                    loadAndBindWorkspace();                } else {                    if (DEBUG_LOADERS) Log.d(TAG, "step 1: special: loading all apps");                    loadAndBindAllApps();                }                if (mStopped) {                    break keep_running;                }                // Whew! Hard work done.  Slow us down, and wait until the UI thread has                // settled down.                synchronized (mLock) {                    if (mIsLaunching) {                        if (DEBUG_LOADERS) Log.d(TAG, "Setting thread priority to BACKGROUND");                        android.os.Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);                    }                }                waitForIdle();                // Second step                if (loadWorkspaceFirst) {                    if (DEBUG_LOADERS) Log.d(TAG, "step 2: loading all apps");                    loadAndBindAllApps();                } else {                    if (DEBUG_LOADERS) Log.d(TAG, "step 2: special: loading workspace");                    loadAndBindWorkspace();                }                // Restore the default thread priority after we are done loading items                synchronized (mLock) {                    android.os.Process.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT);                }            }            // Update the saved icons if necessary            if (DEBUG_LOADERS) Log.d(TAG, "Comparing loaded icons to database icons");            for (Object key : sDbIconCache.keySet()) {                updateSavedIcon(mContext, (ShortcutInfo) key, sDbIconCache.get(key));            }            sDbIconCache.clear();            // Clear out this reference, otherwise we end up holding it until all of the            // callback runnables are done.            mContext = null;            synchronized (mLock) {                // If we are still the last one to be scheduled, remove ourselves.                if (mLoaderTask == this) {                    mLoaderTask = null;                }            }        }


这个有Frist Step和Second Step,意思就是,

当loadWorkspaceFirst=true:先加载Workspace,后加载AllApps

当loadWorkspaceFirst=false:或者先加载AllApps,后加载Workspace;

所以我画图的时候用True/False,  False/True;

  相关解决方案