[DO NOT MERGE] Keeping Launcher in overview UI if activity is restarting
due to UI mode changes
Test: Verified Launcher behavior locally
Bug: 148988542
Change-Id: Id83e5e0892666af1420e8f8c711b83f1ea355188
(cherry picked from commit 6c0c61acd8
)
This commit is contained in:
parent
ec5e095430
commit
980c089d2f
|
@ -18,6 +18,7 @@ package com.android.launcher3;
|
|||
|
||||
import static android.content.pm.ActivityInfo.CONFIG_ORIENTATION;
|
||||
import static android.content.pm.ActivityInfo.CONFIG_SCREEN_SIZE;
|
||||
import static android.content.pm.ActivityInfo.CONFIG_UI_MODE;
|
||||
import static android.view.accessibility.AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED;
|
||||
|
||||
import static com.android.launcher3.AbstractFloatingView.TYPE_ALL;
|
||||
|
@ -1103,7 +1104,11 @@ public class Launcher extends StatefulActivity<LauncherState> implements Launche
|
|||
int stateOrdinal = savedState.getInt(RUNTIME_STATE, NORMAL.ordinal);
|
||||
LauncherState[] stateValues = LauncherState.values();
|
||||
LauncherState state = stateValues[stateOrdinal];
|
||||
if (!state.shouldDisableRestore()) {
|
||||
|
||||
NonConfigInstance lastInstance = (NonConfigInstance) getLastNonConfigurationInstance();
|
||||
boolean forceRestore = lastInstance != null
|
||||
&& (lastInstance.config.diff(mOldConfig) & CONFIG_UI_MODE) != 0;
|
||||
if (forceRestore || !state.shouldDisableRestore()) {
|
||||
mStateManager.goToState(state, false /* animated */);
|
||||
}
|
||||
|
||||
|
@ -1343,6 +1348,13 @@ public class Launcher extends StatefulActivity<LauncherState> implements Launche
|
|||
closeContextMenu();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object onRetainNonConfigurationInstance() {
|
||||
NonConfigInstance instance = new NonConfigInstance();
|
||||
instance.config = new Configuration(mOldConfig);
|
||||
return instance;
|
||||
}
|
||||
|
||||
public AllAppsTransitionController getAllAppsController() {
|
||||
return mAllAppsController;
|
||||
}
|
||||
|
@ -2745,4 +2757,8 @@ public class Launcher extends StatefulActivity<LauncherState> implements Launche
|
|||
|
||||
void onLauncherResume();
|
||||
}
|
||||
|
||||
private static class NonConfigInstance {
|
||||
public Configuration config;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -121,7 +121,9 @@ public abstract class StatefulActivity<STATE_TYPE extends BaseState<STATE_TYPE>>
|
|||
final int origDragLayerChildCount = dragLayer.getChildCount();
|
||||
super.onStop();
|
||||
|
||||
getStateManager().moveToRestState();
|
||||
if (!isChangingConfigurations()) {
|
||||
getStateManager().moveToRestState();
|
||||
}
|
||||
|
||||
// Workaround for b/78520668, explicitly trim memory once UI is hidden
|
||||
onTrimMemory(TRIM_MEMORY_UI_HIDDEN);
|
||||
|
|
Loading…
Reference in New Issue