Merge "Adjust recents onboarding logic" into pi-dev
diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java
index 127361a..d9359a4 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java
@@ -21,6 +21,7 @@
import android.annotation.TargetApi;
import android.app.ActivityManager;
+import android.content.ComponentName;
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
@@ -65,6 +66,8 @@
private static final long SHOW_HIDE_DURATION_MS = 300;
// Don't show the onboarding until the user has launched this number of apps.
private static final int SHOW_ON_APP_LAUNCH = 2;
+ // After explicitly dismissing, show again after launching this number of apps.
+ private static final int SHOW_ON_APP_LAUNCH_AFTER_DISMISS = 5;
private final Context mContext;
private final WindowManager mWindowManager;
@@ -84,6 +87,9 @@
private boolean mTaskListenerRegistered;
private boolean mLayoutAttachedToWindow;
private boolean mBackgroundIsLight;
+ private int mLastTaskId;
+ private boolean mHasDismissed;
+ private int mNumAppsLaunchedSinceDismiss;
private final SysUiTaskStackChangeListener mTaskListener = new SysUiTaskStackChangeListener() {
@Override
@@ -94,14 +100,26 @@
hide(true);
return;
}
+ if (info.id == mLastTaskId) {
+ // We only count launches that go to a new task.
+ return;
+ }
int activityType = info.configuration.windowConfiguration.getActivityType();
- int numAppsLaunched = Prefs.getInt(mContext, Prefs.Key.NUM_APPS_LAUNCHED, 0);
if (activityType == ACTIVITY_TYPE_STANDARD) {
+ mLastTaskId = info.id;
+ int numAppsLaunched = mHasDismissed ? mNumAppsLaunchedSinceDismiss
+ : Prefs.getInt(mContext, Prefs.Key.NUM_APPS_LAUNCHED, 0);
+ int showOnAppLaunch = mHasDismissed ? SHOW_ON_APP_LAUNCH_AFTER_DISMISS
+ : SHOW_ON_APP_LAUNCH;
numAppsLaunched++;
- if (numAppsLaunched >= SHOW_ON_APP_LAUNCH) {
+ if (numAppsLaunched >= showOnAppLaunch) {
show();
} else {
- Prefs.putInt(mContext, Prefs.Key.NUM_APPS_LAUNCHED, numAppsLaunched);
+ if (mHasDismissed) {
+ mNumAppsLaunchedSinceDismiss = numAppsLaunched;
+ } else {
+ Prefs.putInt(mContext, Prefs.Key.NUM_APPS_LAUNCHED, numAppsLaunched);
+ }
}
} else {
hide(false);
@@ -115,6 +133,7 @@
public void onViewAttachedToWindow(View view) {
if (view == mLayout) {
mLayoutAttachedToWindow = true;
+ mHasDismissed = false;
}
}
@@ -149,7 +168,11 @@
mLayout.addOnAttachStateChangeListener(mOnAttachStateChangeListener);
mLayout.setBackground(mBackgroundDrawable);
- mDismissView.setOnClickListener(v -> hide(true));
+ mDismissView.setOnClickListener(v -> {
+ hide(true);
+ mHasDismissed = true;
+ mNumAppsLaunchedSinceDismiss = 0;
+ });
if (RESET_PREFS_FOR_DEBUG) {
Prefs.putBoolean(mContext, Prefs.Key.HAS_SEEN_RECENTS_ONBOARDING, false);
@@ -180,6 +203,8 @@
ActivityManagerWrapper.getInstance().unregisterTaskStackListener(mTaskListener);
mTaskListenerRegistered = false;
}
+ mHasDismissed = false;
+ mNumAppsLaunchedSinceDismiss = 0;
hide(false);
}