Loading quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.java +4 −0 Original line number Diff line number Diff line Loading @@ -152,5 +152,9 @@ public class RecentsViewStateController implements StateHandler { private void applyProgress() { mRecentsView.setAlpha(mTransitionProgress.value * mVisibilityMultiplier.value); if (mIsRecentsSlidingInOrOut) { // While animating into recents, update the visible task data as needed mRecentsView.loadVisibleTaskData(); } } } quickstep/src/com/android/quickstep/RecentsModel.java +2 −2 Original line number Diff line number Diff line Loading @@ -210,13 +210,13 @@ public class RecentsModel extends TaskStackChangeListener { public void onStart() { mRecentsTaskLoader.startLoader(mContext); // mRecentsTaskLoader.getHighResThumbnailLoader().setVisible(true); mRecentsTaskLoader.getHighResThumbnailLoader().setVisible(true); } public void onTrimMemory(int level) { if (level == ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN) { // We already stop the loader in UI_HIDDEN, so stop the high res loader as well // mRecentsTaskLoader.getHighResThumbnailLoader().setVisible(false); mRecentsTaskLoader.getHighResThumbnailLoader().setVisible(false); } mRecentsTaskLoader.onTrimMemory(level); } Loading quickstep/src/com/android/quickstep/RecentsView.java +51 −19 Original line number Diff line number Diff line Loading @@ -111,7 +111,9 @@ public class RecentsView extends PagedView implements Insettable, OnSharedPrefer private boolean mScrimOnLeft; private boolean mFirstTaskIconScaledDown = false; private SparseBooleanArray mPrevVisibleTasks = new SparseBooleanArray(); // Keeps track of the previously known visible tasks for purposes of loading/unloading task data private SparseBooleanArray mHasVisibleTaskData = new SparseBooleanArray(); public RecentsView(Context context) { this(context, null); Loading Loading @@ -216,6 +218,20 @@ public class RecentsView extends PagedView implements Insettable, OnSharedPrefer Utilities.getPrefs(getContext()).unregisterOnSharedPreferenceChangeListener(this); } @Override public void onViewRemoved(View child) { super.onViewRemoved(child); // Clear the task data for the removed child if it was visible Task task = ((TaskView) child).getTask(); if (mHasVisibleTaskData.get(task.key.id)) { mHasVisibleTaskData.delete(task.key.id); RecentsTaskLoader loader = mModel.getRecentsTaskLoader(); loader.unloadTaskData(task); loader.getHighResThumbnailLoader().onTaskInvisible(task); } } @Override public void setInsets(Rect insets) { mInsets.set(insets); Loading Loading @@ -295,7 +311,6 @@ public class RecentsView extends PagedView implements Insettable, OnSharedPrefer } private void applyLoadPlan(RecentsTaskLoadPlan loadPlan) { final RecentsTaskLoader loader = mModel.getRecentsTaskLoader(); TaskStack stack = loadPlan != null ? loadPlan.getTaskStack() : null; if (stack == null) { removeAllViews(); Loading @@ -317,13 +332,13 @@ public class RecentsView extends PagedView implements Insettable, OnSharedPrefer } while (getChildCount() > requiredChildCount) { final TaskView taskView = (TaskView) getChildAt(getChildCount() - 1); final Task task = taskView.getTask(); removeView(taskView); loader.unloadTaskData(task); // loader.getHighResThumbnailLoader().onTaskInvisible(task); } setLayoutTransition(mLayoutTransition); // Unload existing visible task data unloadVisibleTaskData(); // Rebind and reset all task views for (int i = requiredChildCount - 1; i >= 0; i--) { final int pageIndex = requiredChildCount - i - 1; Loading @@ -333,8 +348,8 @@ public class RecentsView extends PagedView implements Insettable, OnSharedPrefer taskView.resetVisualProperties(); } updateCurveProperties(); // Reload the set of visible task's data mPrevVisibleTasks.clear(); // Update the set of visible task's data loadVisibleTaskData(); applyIconScale(false /* animate */); Loading Loading @@ -421,7 +436,7 @@ public class RecentsView extends PagedView implements Insettable, OnSharedPrefer // Update the high res thumbnail loader RecentsTaskLoader loader = mModel.getRecentsTaskLoader(); // loader.getHighResThumbnailLoader().setFlingingFast(isFlingingFast); loader.getHighResThumbnailLoader().setFlingingFast(isFlingingFast); return scrolling; } Loading Loading @@ -453,28 +468,48 @@ public class RecentsView extends PagedView implements Insettable, OnSharedPrefer * Iterates through all thet asks, and loads the associated task data for newly visible tasks, * and unloads the associated task data for tasks that are no longer visible. */ private void loadVisibleTaskData() { public void loadVisibleTaskData() { RecentsTaskLoader loader = mModel.getRecentsTaskLoader(); int centerPageIndex = getPageNearestToCenterOfScreen(); int lower = Math.max(0, centerPageIndex - 2); int upper = Math.min(centerPageIndex + 2, getChildCount() - 1); for (int i = 0; i < getChildCount(); i++) { int numChildren = getChildCount(); // Update the task data for the in/visible children for (int i = 0; i < numChildren; i++) { TaskView taskView = (TaskView) getChildAt(i); Task task = taskView.getTask(); boolean visible = lower <= i && i <= upper; if (visible) { if (!mPrevVisibleTasks.get(i)) { if (!mHasVisibleTaskData.get(task.key.id)) { loader.loadTaskData(task); // loader.getHighResThumbnailLoader().onTaskVisible(task); loader.getHighResThumbnailLoader().onTaskVisible(task); } mHasVisibleTaskData.put(task.key.id, visible); } else { if (mPrevVisibleTasks.get(i)) { if (mHasVisibleTaskData.get(task.key.id)) { loader.unloadTaskData(task); // loader.getHighResThumbnailLoader().onTaskInvisible(task); loader.getHighResThumbnailLoader().onTaskInvisible(task); } mHasVisibleTaskData.delete(task.key.id); } } } mPrevVisibleTasks.put(i, visible); /** * Unloads any associated data from the currently visible tasks */ private void unloadVisibleTaskData() { RecentsTaskLoader loader = mModel.getRecentsTaskLoader(); for (int i = 0; i < mHasVisibleTaskData.size(); i++) { if (mHasVisibleTaskData.valueAt(i)) { TaskView taskView = getTaskView(mHasVisibleTaskData.keyAt(i)); Task task = taskView.getTask(); loader.unloadTaskData(task); loader.getHighResThumbnailLoader().onTaskInvisible(task); } } mHasVisibleTaskData.clear(); } public void onTaskDismissed(TaskView taskView) { Loading @@ -486,14 +521,11 @@ public class RecentsView extends PagedView implements Insettable, OnSharedPrefer } public void reset() { unloadVisibleTaskData(); mRunningTaskId = -1; setCurrentPage(0); } public int getRunningTaskId() { return mRunningTaskId; } /** * Reloads the view if anything in recents changed. */ Loading src/com/android/launcher3/PagedView.java +2 −0 Original line number Diff line number Diff line Loading @@ -648,11 +648,13 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou @Override public void onViewAdded(View child) { super.onViewAdded(child); dispatchPageCountChanged(); } @Override public void onViewRemoved(View child) { super.onViewRemoved(child); mCurrentPage = validateNewPage(mCurrentPage); dispatchPageCountChanged(); } Loading Loading
quickstep/src/com/android/launcher3/uioverrides/RecentsViewStateController.java +4 −0 Original line number Diff line number Diff line Loading @@ -152,5 +152,9 @@ public class RecentsViewStateController implements StateHandler { private void applyProgress() { mRecentsView.setAlpha(mTransitionProgress.value * mVisibilityMultiplier.value); if (mIsRecentsSlidingInOrOut) { // While animating into recents, update the visible task data as needed mRecentsView.loadVisibleTaskData(); } } }
quickstep/src/com/android/quickstep/RecentsModel.java +2 −2 Original line number Diff line number Diff line Loading @@ -210,13 +210,13 @@ public class RecentsModel extends TaskStackChangeListener { public void onStart() { mRecentsTaskLoader.startLoader(mContext); // mRecentsTaskLoader.getHighResThumbnailLoader().setVisible(true); mRecentsTaskLoader.getHighResThumbnailLoader().setVisible(true); } public void onTrimMemory(int level) { if (level == ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN) { // We already stop the loader in UI_HIDDEN, so stop the high res loader as well // mRecentsTaskLoader.getHighResThumbnailLoader().setVisible(false); mRecentsTaskLoader.getHighResThumbnailLoader().setVisible(false); } mRecentsTaskLoader.onTrimMemory(level); } Loading
quickstep/src/com/android/quickstep/RecentsView.java +51 −19 Original line number Diff line number Diff line Loading @@ -111,7 +111,9 @@ public class RecentsView extends PagedView implements Insettable, OnSharedPrefer private boolean mScrimOnLeft; private boolean mFirstTaskIconScaledDown = false; private SparseBooleanArray mPrevVisibleTasks = new SparseBooleanArray(); // Keeps track of the previously known visible tasks for purposes of loading/unloading task data private SparseBooleanArray mHasVisibleTaskData = new SparseBooleanArray(); public RecentsView(Context context) { this(context, null); Loading Loading @@ -216,6 +218,20 @@ public class RecentsView extends PagedView implements Insettable, OnSharedPrefer Utilities.getPrefs(getContext()).unregisterOnSharedPreferenceChangeListener(this); } @Override public void onViewRemoved(View child) { super.onViewRemoved(child); // Clear the task data for the removed child if it was visible Task task = ((TaskView) child).getTask(); if (mHasVisibleTaskData.get(task.key.id)) { mHasVisibleTaskData.delete(task.key.id); RecentsTaskLoader loader = mModel.getRecentsTaskLoader(); loader.unloadTaskData(task); loader.getHighResThumbnailLoader().onTaskInvisible(task); } } @Override public void setInsets(Rect insets) { mInsets.set(insets); Loading Loading @@ -295,7 +311,6 @@ public class RecentsView extends PagedView implements Insettable, OnSharedPrefer } private void applyLoadPlan(RecentsTaskLoadPlan loadPlan) { final RecentsTaskLoader loader = mModel.getRecentsTaskLoader(); TaskStack stack = loadPlan != null ? loadPlan.getTaskStack() : null; if (stack == null) { removeAllViews(); Loading @@ -317,13 +332,13 @@ public class RecentsView extends PagedView implements Insettable, OnSharedPrefer } while (getChildCount() > requiredChildCount) { final TaskView taskView = (TaskView) getChildAt(getChildCount() - 1); final Task task = taskView.getTask(); removeView(taskView); loader.unloadTaskData(task); // loader.getHighResThumbnailLoader().onTaskInvisible(task); } setLayoutTransition(mLayoutTransition); // Unload existing visible task data unloadVisibleTaskData(); // Rebind and reset all task views for (int i = requiredChildCount - 1; i >= 0; i--) { final int pageIndex = requiredChildCount - i - 1; Loading @@ -333,8 +348,8 @@ public class RecentsView extends PagedView implements Insettable, OnSharedPrefer taskView.resetVisualProperties(); } updateCurveProperties(); // Reload the set of visible task's data mPrevVisibleTasks.clear(); // Update the set of visible task's data loadVisibleTaskData(); applyIconScale(false /* animate */); Loading Loading @@ -421,7 +436,7 @@ public class RecentsView extends PagedView implements Insettable, OnSharedPrefer // Update the high res thumbnail loader RecentsTaskLoader loader = mModel.getRecentsTaskLoader(); // loader.getHighResThumbnailLoader().setFlingingFast(isFlingingFast); loader.getHighResThumbnailLoader().setFlingingFast(isFlingingFast); return scrolling; } Loading Loading @@ -453,28 +468,48 @@ public class RecentsView extends PagedView implements Insettable, OnSharedPrefer * Iterates through all thet asks, and loads the associated task data for newly visible tasks, * and unloads the associated task data for tasks that are no longer visible. */ private void loadVisibleTaskData() { public void loadVisibleTaskData() { RecentsTaskLoader loader = mModel.getRecentsTaskLoader(); int centerPageIndex = getPageNearestToCenterOfScreen(); int lower = Math.max(0, centerPageIndex - 2); int upper = Math.min(centerPageIndex + 2, getChildCount() - 1); for (int i = 0; i < getChildCount(); i++) { int numChildren = getChildCount(); // Update the task data for the in/visible children for (int i = 0; i < numChildren; i++) { TaskView taskView = (TaskView) getChildAt(i); Task task = taskView.getTask(); boolean visible = lower <= i && i <= upper; if (visible) { if (!mPrevVisibleTasks.get(i)) { if (!mHasVisibleTaskData.get(task.key.id)) { loader.loadTaskData(task); // loader.getHighResThumbnailLoader().onTaskVisible(task); loader.getHighResThumbnailLoader().onTaskVisible(task); } mHasVisibleTaskData.put(task.key.id, visible); } else { if (mPrevVisibleTasks.get(i)) { if (mHasVisibleTaskData.get(task.key.id)) { loader.unloadTaskData(task); // loader.getHighResThumbnailLoader().onTaskInvisible(task); loader.getHighResThumbnailLoader().onTaskInvisible(task); } mHasVisibleTaskData.delete(task.key.id); } } } mPrevVisibleTasks.put(i, visible); /** * Unloads any associated data from the currently visible tasks */ private void unloadVisibleTaskData() { RecentsTaskLoader loader = mModel.getRecentsTaskLoader(); for (int i = 0; i < mHasVisibleTaskData.size(); i++) { if (mHasVisibleTaskData.valueAt(i)) { TaskView taskView = getTaskView(mHasVisibleTaskData.keyAt(i)); Task task = taskView.getTask(); loader.unloadTaskData(task); loader.getHighResThumbnailLoader().onTaskInvisible(task); } } mHasVisibleTaskData.clear(); } public void onTaskDismissed(TaskView taskView) { Loading @@ -486,14 +521,11 @@ public class RecentsView extends PagedView implements Insettable, OnSharedPrefer } public void reset() { unloadVisibleTaskData(); mRunningTaskId = -1; setCurrentPage(0); } public int getRunningTaskId() { return mRunningTaskId; } /** * Reloads the view if anything in recents changed. */ Loading
src/com/android/launcher3/PagedView.java +2 −0 Original line number Diff line number Diff line Loading @@ -648,11 +648,13 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou @Override public void onViewAdded(View child) { super.onViewAdded(child); dispatchPageCountChanged(); } @Override public void onViewRemoved(View child) { super.onViewRemoved(child); mCurrentPage = validateNewPage(mCurrentPage); dispatchPageCountChanged(); } Loading