Fix Settings home lifecycle
Bug: 27330440
Bug: 26268813
Change-Id: Ibb3729c9872be2488db3741ec72ba5a43e66db5f
diff --git a/src/com/android/settings/dashboard/DashboardSummary.java b/src/com/android/settings/dashboard/DashboardSummary.java
index 69fd8e7..448a77d 100644
--- a/src/com/android/settings/dashboard/DashboardSummary.java
+++ b/src/com/android/settings/dashboard/DashboardSummary.java
@@ -58,11 +58,14 @@
private static final String SUGGESTIONS = "suggestions";
+ private static final String EXTRA_SCROLL_POSITION = "scroll_position";
+
private FocusRecyclerView mDashboard;
private DashboardAdapter mAdapter;
private SummaryLoader mSummaryLoader;
private ConditionManager mConditionManager;
private SuggestionParser mSuggestionParser;
+ private LinearLayoutManager mLayoutManager;
@Override
protected int getMetricsCategory() {
@@ -134,16 +137,27 @@
}
@Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ outState.putInt(EXTRA_SCROLL_POSITION, mLayoutManager.findFirstVisibleItemPosition());
+ }
+
+ @Override
public void onViewCreated(View view, Bundle bundle) {
mDashboard = (FocusRecyclerView) view.findViewById(R.id.dashboard_container);
- LinearLayoutManager llm = new LinearLayoutManager(getContext());
- llm.setOrientation(LinearLayoutManager.VERTICAL);
- mDashboard.setLayoutManager(llm);
+ mLayoutManager = new LinearLayoutManager(getContext());
+ mLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
+ if (bundle != null) {
+ int scrollPosition = bundle.getInt(EXTRA_SCROLL_POSITION);
+ mLayoutManager.scrollToPosition(scrollPosition);
+ }
+ mDashboard.setLayoutManager(mLayoutManager);
mDashboard.setHasFixedSize(true);
mDashboard.setListener(this);
mAdapter = new DashboardAdapter(getContext());
mAdapter.setConditions(mConditionManager.getConditions());
mAdapter.setSuggestions(mSuggestionParser);
+ mDashboard.setAdapter(mAdapter);
mSummaryLoader.setAdapter(mAdapter);
ConditionAdapterUtils.addDismiss(mDashboard);
@@ -164,7 +178,6 @@
// recheck to see if any suggestions have been changed.
mAdapter.setSuggestions(mSuggestionParser);
- mDashboard.setAdapter(mAdapter);
long delta = System.currentTimeMillis() - start;
Log.d(TAG, "rebuildUI took: " + delta + " ms");