Fix the highlight error after unfolding the device

Unfolding a device generates mutiple lifecycle events and resets the
highlight key.

Check if there's only one activity in the task and then perform the
reset.

Fix: 209016927
Test: manual
Change-Id: I49988fa913270d35a04436777433b7669afb72df
diff --git a/src/com/android/settings/homepage/SettingsHomepageActivity.java b/src/com/android/settings/homepage/SettingsHomepageActivity.java
index 9076053..183a2fb 100644
--- a/src/com/android/settings/homepage/SettingsHomepageActivity.java
+++ b/src/com/android/settings/homepage/SettingsHomepageActivity.java
@@ -311,7 +311,7 @@
     }
 
     private void launchDeepLinkIntentToRight() {
-        if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(this)) {
+        if (!mIsEmbeddingActivityEnabled) {
             return;
         }
 
diff --git a/src/com/android/settings/homepage/TopLevelSettings.java b/src/com/android/settings/homepage/TopLevelSettings.java
index f2e5a35..f76a3de 100644
--- a/src/com/android/settings/homepage/TopLevelSettings.java
+++ b/src/com/android/settings/homepage/TopLevelSettings.java
@@ -19,12 +19,14 @@
 import static com.android.settings.search.actionbar.SearchMenuController.NEED_SEARCH_ICON_IN_ACTION_BAR;
 import static com.android.settingslib.search.SearchIndexable.MOBILE;
 
+import android.app.ActivityManager;
 import android.app.settings.SettingsEnums;
 import android.content.Context;
 import android.content.res.Configuration;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
 import android.text.TextUtils;
+import android.util.Log;
 
 import androidx.fragment.app.Fragment;
 import androidx.preference.Preference;
@@ -53,6 +55,7 @@
     private static final String SAVED_HIGHLIGHT_MIXIN = "highlight_mixin";
     private static final String PREF_KEY_SUPPORT = "top_level_support";
 
+    private boolean mIsEmbeddingActivityEnabled;
     private TopLevelHighlightMixin mHighlightMixin;
     private boolean mFirstStarted = true;
 
@@ -122,7 +125,9 @@
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
-        if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(getContext())) {
+        mIsEmbeddingActivityEnabled =
+                ActivityEmbeddingUtils.isEmbeddingActivityEnabled(getContext());
+        if (!mIsEmbeddingActivityEnabled) {
             return;
         }
 
@@ -138,15 +143,23 @@
     public void onStart() {
         if (mFirstStarted) {
             mFirstStarted = false;
-        } else if (!ActivityEmbeddingUtils.isTwoPaneResolution(getActivity())) {
+        } else if (mIsEmbeddingActivityEnabled && isOnlyOneActivityInTask()
+                && !ActivityEmbeddingUtils.isTwoPaneResolution(getActivity())) {
             // Set default highlight menu key for 1-pane homepage since it will show the placeholder
             // page once changing back to 2-pane.
+            Log.i(TAG, "Set default menu key");
             setHighlightMenuKey(getString(SettingsHomepageActivity.DEFAULT_HIGHLIGHT_MENU_KEY),
                     /* scrollNeeded= */ false);
         }
         super.onStart();
     }
 
+    private boolean isOnlyOneActivityInTask() {
+        final ActivityManager.RunningTaskInfo taskInfo = getSystemService(ActivityManager.class)
+                .getRunningTasks(1).get(0);
+        return taskInfo.numActivities == 1;
+    }
+
     @Override
     public void onSaveInstanceState(Bundle outState) {
         super.onSaveInstanceState(outState);
@@ -225,8 +238,7 @@
 
     @Override
     protected RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) {
-        if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(getContext())
-                || !(getActivity() instanceof SettingsHomepageActivity)) {
+        if (!mIsEmbeddingActivityEnabled || !(getActivity() instanceof SettingsHomepageActivity)) {
             return super.onCreateAdapter(preferenceScreen);
         }
         return mHighlightMixin.onCreateAdapter(this, preferenceScreen);