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;
// 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;
}
};
+
+ 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.
*/
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) {
// 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
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();
loader.loadTasks(mContext, plan, launchOpts);
}
+ public void onBootCompleted() {
+ // Do nothing
+ }
+
public void onConfigurationChanged() {
reloadResources();
mDummyStackView.reloadOnConfigurationChange();