Search in sources :

Example 1 with ComponentCachingLogic

use of com.android.launcher3.icons.ComponentWithLabel.ComponentCachingLogic in project Neo-Launcher by NeoApplications.

the class LoaderTask method run.

public void run() {
    synchronized (this) {
        // Skip fast if we are already stopped.
        if (mStopped) {
            return;
        }
    }
    TraceHelper.beginSection(TAG);
    try (LauncherModel.LoaderTransaction transaction = mApp.getModel().beginLoader(this)) {
        TraceHelper.partitionSection(TAG, "step 1.1: loading workspace");
        loadWorkspace();
        verifyNotStopped();
        TraceHelper.partitionSection(TAG, "step 1.2: bind workspace workspace");
        mResults.bindWorkspace();
        // Notify the installer packages of packages with active installs on the first screen.
        TraceHelper.partitionSection(TAG, "step 1.3: send first screen broadcast");
        sendFirstScreenActiveInstallsBroadcast();
        // Take a break
        TraceHelper.partitionSection(TAG, "step 1 completed, wait for idle");
        waitForIdle();
        verifyNotStopped();
        // second step
        TraceHelper.partitionSection(TAG, "step 2.1: loading all apps");
        List<LauncherActivityInfo> allActivityList = loadAllApps();
        TraceHelper.partitionSection(TAG, "step 2.2: Binding all apps");
        verifyNotStopped();
        mResults.bindAllApps();
        verifyNotStopped();
        TraceHelper.partitionSection(TAG, "step 2.3: Update icon cache");
        IconCacheUpdateHandler updateHandler = mIconCache.getUpdateHandler();
        setIgnorePackages(updateHandler);
        updateHandler.updateIcons(allActivityList, LauncherActivityCachingLogic.newInstance(mApp.getContext()), mApp.getModel()::onPackageIconsUpdated);
        // Take a break
        TraceHelper.partitionSection(TAG, "step 2 completed, wait for idle");
        waitForIdle();
        verifyNotStopped();
        // third step
        TraceHelper.partitionSection(TAG, "step 3.1: loading deep shortcuts");
        loadDeepShortcuts();
        verifyNotStopped();
        TraceHelper.partitionSection(TAG, "step 3.2: bind deep shortcuts");
        mResults.bindDeepShortcuts();
        // Take a break
        TraceHelper.partitionSection(TAG, "step 3 completed, wait for idle");
        waitForIdle();
        verifyNotStopped();
        // fourth step
        TraceHelper.partitionSection(TAG, "step 4.1: loading widgets");
        List<ComponentWithLabel> allWidgetsList = mBgDataModel.widgetsModel.update(mApp, null);
        verifyNotStopped();
        TraceHelper.partitionSection(TAG, "step 4.2: Binding widgets");
        mResults.bindWidgets();
        verifyNotStopped();
        TraceHelper.partitionSection(TAG, "step 4.3: save widgets in icon cache");
        updateHandler.updateIcons(allWidgetsList, new ComponentCachingLogic(mApp.getContext(), true), mApp.getModel()::onWidgetLabelsUpdated);
        verifyNotStopped();
        TraceHelper.partitionSection(TAG, "step 5: Finish icon cache update");
        updateHandler.finish();
        transaction.commit();
    } catch (CancellationException e) {
        // Loader stopped, ignore
        TraceHelper.partitionSection(TAG, "Cancelled");
    }
    TraceHelper.endSection(TAG);
}
Also used : LauncherModel(com.android.launcher3.LauncherModel) ComponentCachingLogic(com.android.launcher3.icons.ComponentWithLabel.ComponentCachingLogic) CancellationException(java.util.concurrent.CancellationException) LauncherActivityInfo(android.content.pm.LauncherActivityInfo) IconCacheUpdateHandler(com.android.launcher3.icons.cache.IconCacheUpdateHandler) ComponentWithLabel(com.android.launcher3.icons.ComponentWithLabel)

Aggregations

LauncherActivityInfo (android.content.pm.LauncherActivityInfo)1 LauncherModel (com.android.launcher3.LauncherModel)1 ComponentWithLabel (com.android.launcher3.icons.ComponentWithLabel)1 ComponentCachingLogic (com.android.launcher3.icons.ComponentWithLabel.ComponentCachingLogic)1 IconCacheUpdateHandler (com.android.launcher3.icons.cache.IconCacheUpdateHandler)1 CancellationException (java.util.concurrent.CancellationException)1