[Wi-Fi] Fix data usage screen flash 1~2 times problem
Data loaders should be destroyed at onPause or the APP list will be updated twice. Bug: 146841747 Test: make RunSettingsRoboTests ROBOTEST_FILTER=DataUsageListTest Change-Id: Ic1b8ef443dd8e50777f1e3a16977add654748c54
This commit is contained in:
@@ -90,8 +90,10 @@ public class DataUsageList extends DataUsageBaseFragment
|
|||||||
private static final String KEY_APP = "app";
|
private static final String KEY_APP = "app";
|
||||||
private static final String KEY_FIELDS = "fields";
|
private static final String KEY_FIELDS = "fields";
|
||||||
|
|
||||||
private static final int LOADER_CHART_DATA = 2;
|
@VisibleForTesting
|
||||||
private static final int LOADER_SUMMARY = 3;
|
static final int LOADER_CHART_DATA = 2;
|
||||||
|
@VisibleForTesting
|
||||||
|
static final int LOADER_SUMMARY = 3;
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
MobileDataEnabledListener mDataStateListener;
|
MobileDataEnabledListener mDataStateListener;
|
||||||
@@ -188,6 +190,13 @@ public class DataUsageList extends DataUsageBaseFragment
|
|||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
mDataStateListener.start(mSubId);
|
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();
|
updateBody();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -195,6 +204,9 @@ public class DataUsageList extends DataUsageBaseFragment
|
|||||||
public void onPause() {
|
public void onPause() {
|
||||||
super.onPause();
|
super.onPause();
|
||||||
mDataStateListener.stop();
|
mDataStateListener.stop();
|
||||||
|
|
||||||
|
getLoaderManager().destroyLoader(LOADER_CHART_DATA);
|
||||||
|
getLoaderManager().destroyLoader(LOADER_SUMMARY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -246,12 +258,6 @@ public class DataUsageList extends DataUsageBaseFragment
|
|||||||
|
|
||||||
final Context context = getActivity();
|
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
|
// detail mode can change visible menus, invalidate
|
||||||
getActivity().invalidateOptionsMenu();
|
getActivity().invalidateOptionsMenu();
|
||||||
|
|
||||||
|
@@ -38,6 +38,7 @@ import android.widget.FrameLayout;
|
|||||||
import android.widget.Spinner;
|
import android.widget.Spinner;
|
||||||
|
|
||||||
import androidx.fragment.app.FragmentActivity;
|
import androidx.fragment.app.FragmentActivity;
|
||||||
|
import androidx.loader.app.LoaderManager;
|
||||||
import androidx.preference.PreferenceManager;
|
import androidx.preference.PreferenceManager;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
@@ -71,6 +72,8 @@ public class DataUsageListTest {
|
|||||||
private MobileDataEnabledListener mMobileDataEnabledListener;
|
private MobileDataEnabledListener mMobileDataEnabledListener;
|
||||||
@Mock
|
@Mock
|
||||||
private TemplatePreference.NetworkServices mNetworkServices;
|
private TemplatePreference.NetworkServices mNetworkServices;
|
||||||
|
@Mock
|
||||||
|
private LoaderManager mLoaderManager;
|
||||||
|
|
||||||
private Activity mActivity;
|
private Activity mActivity;
|
||||||
private DataUsageList mDataUsageList;
|
private DataUsageList mDataUsageList;
|
||||||
@@ -90,6 +93,7 @@ public class DataUsageListTest {
|
|||||||
ReflectionHelpers.setField(mDataUsageList, "mDataStateListener",
|
ReflectionHelpers.setField(mDataUsageList, "mDataStateListener",
|
||||||
mMobileDataEnabledListener);
|
mMobileDataEnabledListener);
|
||||||
ReflectionHelpers.setField(mDataUsageList, "services", mNetworkServices);
|
ReflectionHelpers.setField(mDataUsageList, "services", mNetworkServices);
|
||||||
|
doReturn(mLoaderManager).when(mDataUsageList).getLoaderManager();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -216,6 +220,14 @@ public class DataUsageListTest {
|
|||||||
assertThat(spinner.getVisibility()).isEqualTo(View.VISIBLE);
|
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() {
|
private View getHeader() {
|
||||||
final View rootView = LayoutInflater.from(mActivity)
|
final View rootView = LayoutInflater.from(mActivity)
|
||||||
.inflate(R.layout.preference_list_fragment, null, false);
|
.inflate(R.layout.preference_list_fragment, null, false);
|
||||||
|
Reference in New Issue
Block a user