summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Winson <winsonc@google.com> 2016-08-09 14:51:24 -0700
committer Winson Chung <winsonc@google.com> 2016-08-23 23:53:41 +0000
commitc3eedd972dbd4f7c12428de0dc1bc86e55e13dc5 (patch)
treecc85d2203a3488d13e5c2937f81cce5bbf5d5516
parent8664df3d76811d4e044fe8946cc164375ef58d0c (diff)
Bump up preloading recents on boot up to user unlocked.
- To fix b/29320695, we moved the initial recents preloading to boot completed. However, that event happens fairly late in the boot sequence, and preloading can instead be done in response to user unlocked. Bug: 29879478 Change-Id: I881bd9c4c3b91d73df4947bfd2cc55eb6e615d15
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/Recents.java26
-rw-r--r--packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java6
2 files changed, 29 insertions, 3 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/recents/Recents.java b/packages/SystemUI/src/com/android/systemui/recents/Recents.java
index e117bfeb1364..de51c939b13e 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/Recents.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/Recents.java
@@ -18,10 +18,12 @@ package com.android.systemui.recents;
import android.app.ActivityManager;
import android.app.UiModeManager;
+import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
+import android.content.IntentFilter;
import android.content.ServiceConnection;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
@@ -96,7 +98,7 @@ public class Recents extends SystemUI
// and does not reside in the home stack.
private String mOverrideRecentsPackageName;
- private Handler mHandler;
+ private Handler mHandler = new Handler();
private RecentsImpl mImpl;
private int mDraggingInRecentsCurrentUser;
@@ -162,6 +164,20 @@ public class Recents extends SystemUI
}
};
+
+ private BroadcastReceiver mSystemUserUnlockedReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (Intent.ACTION_USER_UNLOCKED.equals(intent.getAction())) {
+ int userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, UserHandle.USER_NULL);
+ if (userId != UserHandle.USER_NULL) {
+ mImpl.onUserUnlocked(userId);
+ }
+ }
+ }
+ };
+
+
/**
* Returns the callbacks interface that non-system users can call.
*/
@@ -191,7 +207,7 @@ public class Recents extends SystemUI
sSystemServicesProxy = SystemServicesProxy.getInstance(mContext);
sTaskLoader = new RecentsTaskLoader(mContext);
sConfiguration = new RecentsConfiguration(mContext);
- mHandler = new Handler();
+
UiModeManager uiModeManager = (UiModeManager) mContext.
getSystemService(Context.UI_MODE_SERVICE);
if (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION) {
@@ -221,6 +237,12 @@ public class Recents extends SystemUI
// For the system user, initialize an instance of the interface that we can pass to the
// secondary user
mSystemToUserCallbacks = new RecentsSystemUser(mContext, mImpl);
+
+ // Listen for user-unlocked to kick off preloading recents
+ IntentFilter filter = new IntentFilter();
+ filter.addAction(Intent.ACTION_USER_UNLOCKED);
+ mContext.registerReceiverAsUser(mSystemUserUnlockedReceiver, UserHandle.SYSTEM, filter,
+ null /* permission */, null /* scheduler */);
} else {
// For the secondary user, bind to the primary user's service to get a persistent
// interface to register its implementation and to later update its state
diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java
index 2757fc4f5cc7..d813170f9239 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java
@@ -186,7 +186,7 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener
reloadResources();
}
- public void onBootCompleted() {
+ public void onUserUnlocked(int userId) {
// When we start, preload the data associated with the previous recent tasks.
// We can use a new plan since the caches will be the same.
RecentsTaskLoader loader = Recents.getTaskLoader();
@@ -199,6 +199,10 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener
loader.loadTasks(mContext, plan, launchOpts);
}
+ public void onBootCompleted() {
+ // Do nothing
+ }
+
public void onConfigurationChanged() {
reloadResources();
mDummyStackView.reloadOnConfigurationChange();