diff --git a/src/com/android/settings/datausage/DataUsageList.java b/src/com/android/settings/datausage/DataUsageList.java index 0cfb8315723..8db32e9eb19 100644 --- a/src/com/android/settings/datausage/DataUsageList.java +++ b/src/com/android/settings/datausage/DataUsageList.java @@ -90,8 +90,10 @@ public class DataUsageList extends DataUsageBaseFragment private static final String KEY_APP = "app"; private static final String KEY_FIELDS = "fields"; - private static final int LOADER_CHART_DATA = 2; - private static final int LOADER_SUMMARY = 3; + @VisibleForTesting + static final int LOADER_CHART_DATA = 2; + @VisibleForTesting + static final int LOADER_SUMMARY = 3; @VisibleForTesting MobileDataEnabledListener mDataStateListener; @@ -188,6 +190,13 @@ public class DataUsageList extends DataUsageBaseFragment public void onResume() { super.onResume(); mDataStateListener.start(mSubId); + + // kick off loader for network history + // TODO: consider chaining two loaders together instead of reloading + // network history when showing app detail. + getLoaderManager().restartLoader(LOADER_CHART_DATA, + buildArgs(mTemplate), mNetworkCycleDataCallbacks); + updateBody(); } @@ -195,6 +204,9 @@ public class DataUsageList extends DataUsageBaseFragment public void onPause() { super.onPause(); mDataStateListener.stop(); + + getLoaderManager().destroyLoader(LOADER_CHART_DATA); + getLoaderManager().destroyLoader(LOADER_SUMMARY); } @Override @@ -246,12 +258,6 @@ public class DataUsageList extends DataUsageBaseFragment final Context context = getActivity(); - // kick off loader for network history - // TODO: consider chaining two loaders together instead of reloading - // network history when showing app detail. - getLoaderManager().restartLoader(LOADER_CHART_DATA, - buildArgs(mTemplate), mNetworkCycleDataCallbacks); - // detail mode can change visible menus, invalidate getActivity().invalidateOptionsMenu(); diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageListTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageListTest.java index 9aca92ece22..e4f5b1fc9e9 100644 --- a/tests/robotests/src/com/android/settings/datausage/DataUsageListTest.java +++ b/tests/robotests/src/com/android/settings/datausage/DataUsageListTest.java @@ -38,6 +38,7 @@ import android.widget.FrameLayout; import android.widget.Spinner; import androidx.fragment.app.FragmentActivity; +import androidx.loader.app.LoaderManager; import androidx.preference.PreferenceManager; import com.android.settings.R; @@ -71,6 +72,8 @@ public class DataUsageListTest { private MobileDataEnabledListener mMobileDataEnabledListener; @Mock private TemplatePreference.NetworkServices mNetworkServices; + @Mock + private LoaderManager mLoaderManager; private Activity mActivity; private DataUsageList mDataUsageList; @@ -90,6 +93,7 @@ public class DataUsageListTest { ReflectionHelpers.setField(mDataUsageList, "mDataStateListener", mMobileDataEnabledListener); ReflectionHelpers.setField(mDataUsageList, "services", mNetworkServices); + doReturn(mLoaderManager).when(mDataUsageList).getLoaderManager(); } @Test @@ -216,6 +220,14 @@ public class DataUsageListTest { assertThat(spinner.getVisibility()).isEqualTo(View.VISIBLE); } + @Test + public void onPause_shouldDestroyLoaders() { + mDataUsageList.onPause(); + + verify(mLoaderManager).destroyLoader(DataUsageList.LOADER_CHART_DATA); + verify(mLoaderManager).destroyLoader(DataUsageList.LOADER_SUMMARY); + } + private View getHeader() { final View rootView = LayoutInflater.from(mActivity) .inflate(R.layout.preference_list_fragment, null, false);