Merge "Cache mechanism for Storage page with work profile" into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
9e9a39d717
@@ -20,6 +20,7 @@ import android.app.Activity;
|
|||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.os.UserHandle;
|
||||||
import android.os.storage.DiskInfo;
|
import android.os.storage.DiskInfo;
|
||||||
import android.os.storage.StorageEventListener;
|
import android.os.storage.StorageEventListener;
|
||||||
import android.os.storage.StorageManager;
|
import android.os.storage.StorageManager;
|
||||||
@@ -36,6 +37,7 @@ import com.android.settings.deviceinfo.StorageCategoryFragment;
|
|||||||
import com.android.settings.deviceinfo.VolumeOptionMenuController;
|
import com.android.settings.deviceinfo.VolumeOptionMenuController;
|
||||||
import com.android.settings.deviceinfo.storage.AutomaticStorageManagementSwitchPreferenceController;
|
import com.android.settings.deviceinfo.storage.AutomaticStorageManagementSwitchPreferenceController;
|
||||||
import com.android.settings.deviceinfo.storage.DiskInitFragment;
|
import com.android.settings.deviceinfo.storage.DiskInitFragment;
|
||||||
|
import com.android.settings.deviceinfo.storage.StorageCacheHelper;
|
||||||
import com.android.settings.deviceinfo.storage.StorageEntry;
|
import com.android.settings.deviceinfo.storage.StorageEntry;
|
||||||
import com.android.settings.deviceinfo.storage.StorageSelectionPreferenceController;
|
import com.android.settings.deviceinfo.storage.StorageSelectionPreferenceController;
|
||||||
import com.android.settings.deviceinfo.storage.StorageUsageProgressBarPreferenceController;
|
import com.android.settings.deviceinfo.storage.StorageUsageProgressBarPreferenceController;
|
||||||
@@ -71,6 +73,8 @@ public class ProfileSelectStorageFragment extends ProfileSelectFragment {
|
|||||||
private StorageSelectionPreferenceController mStorageSelectionController;
|
private StorageSelectionPreferenceController mStorageSelectionController;
|
||||||
private StorageUsageProgressBarPreferenceController mStorageUsageProgressBarController;
|
private StorageUsageProgressBarPreferenceController mStorageUsageProgressBarController;
|
||||||
private VolumeOptionMenuController mOptionMenuController;
|
private VolumeOptionMenuController mOptionMenuController;
|
||||||
|
private boolean mIsLoadedFromCache;
|
||||||
|
private StorageCacheHelper mStorageCacheHelper;
|
||||||
|
|
||||||
private final StorageEventListener mStorageEventListener = new StorageEventListener() {
|
private final StorageEventListener mStorageEventListener = new StorageEventListener() {
|
||||||
@Override
|
@Override
|
||||||
@@ -246,11 +250,20 @@ public class ProfileSelectStorageFragment extends ProfileSelectFragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
initializeOptionsMenu(activity);
|
initializeOptionsMenu(activity);
|
||||||
|
|
||||||
|
if (mStorageCacheHelper.hasCachedSizeInfo()) {
|
||||||
|
mIsLoadedFromCache = true;
|
||||||
|
mStorageEntries.clear();
|
||||||
|
mStorageEntries.addAll(
|
||||||
|
StorageUtils.getAllStorageEntries(getContext(), mStorageManager));
|
||||||
|
refreshUi();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAttach(Context context) {
|
public void onAttach(Context context) {
|
||||||
super.onAttach(context);
|
super.onAttach(context);
|
||||||
|
mStorageCacheHelper = new StorageCacheHelper(getContext(), UserHandle.myUserId());
|
||||||
use(AutomaticStorageManagementSwitchPreferenceController.class).setFragmentManager(
|
use(AutomaticStorageManagementSwitchPreferenceController.class).setFragmentManager(
|
||||||
getFragmentManager());
|
getFragmentManager());
|
||||||
mStorageSelectionController = use(StorageSelectionPreferenceController.class);
|
mStorageSelectionController = use(StorageSelectionPreferenceController.class);
|
||||||
@@ -281,9 +294,14 @@ public class ProfileSelectStorageFragment extends ProfileSelectFragment {
|
|||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
|
|
||||||
mStorageEntries.clear();
|
if (mIsLoadedFromCache) {
|
||||||
mStorageEntries.addAll(StorageUtils.getAllStorageEntries(getContext(), mStorageManager));
|
mIsLoadedFromCache = false;
|
||||||
refreshUi();
|
} else {
|
||||||
|
mStorageEntries.clear();
|
||||||
|
mStorageEntries.addAll(
|
||||||
|
StorageUtils.getAllStorageEntries(getContext(), mStorageManager));
|
||||||
|
refreshUi();
|
||||||
|
}
|
||||||
mStorageManager.registerListener(mStorageEventListener);
|
mStorageManager.registerListener(mStorageEventListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -39,6 +39,7 @@ import com.android.settings.dashboard.DashboardFragment;
|
|||||||
import com.android.settings.dashboard.profileselector.ProfileSelectFragment;
|
import com.android.settings.dashboard.profileselector.ProfileSelectFragment;
|
||||||
import com.android.settings.deviceinfo.storage.SecondaryUserController;
|
import com.android.settings.deviceinfo.storage.SecondaryUserController;
|
||||||
import com.android.settings.deviceinfo.storage.StorageAsyncLoader;
|
import com.android.settings.deviceinfo.storage.StorageAsyncLoader;
|
||||||
|
import com.android.settings.deviceinfo.storage.StorageCacheHelper;
|
||||||
import com.android.settings.deviceinfo.storage.StorageEntry;
|
import com.android.settings.deviceinfo.storage.StorageEntry;
|
||||||
import com.android.settings.deviceinfo.storage.StorageItemPreferenceController;
|
import com.android.settings.deviceinfo.storage.StorageItemPreferenceController;
|
||||||
import com.android.settings.deviceinfo.storage.UserIconLoader;
|
import com.android.settings.deviceinfo.storage.UserIconLoader;
|
||||||
@@ -90,6 +91,8 @@ public class StorageCategoryFragment extends DashboardFragment
|
|||||||
private boolean mIsWorkProfile;
|
private boolean mIsWorkProfile;
|
||||||
private int mUserId;
|
private int mUserId;
|
||||||
private Preference mFreeUpSpacePreference;
|
private Preference mFreeUpSpacePreference;
|
||||||
|
private boolean mIsLoadedFromCache;
|
||||||
|
private StorageCacheHelper mStorageCacheHelper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Refresh UI for specified storageEntry.
|
* Refresh UI for specified storageEntry.
|
||||||
@@ -111,14 +114,23 @@ public class StorageCategoryFragment extends DashboardFragment
|
|||||||
mPreferenceController.setVolume(null);
|
mPreferenceController.setVolume(null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (mStorageCacheHelper.hasCachedSizeInfo() && mSelectedStorageEntry.isPrivate()) {
|
||||||
|
StorageCacheHelper.StorageCache cachedData = mStorageCacheHelper.retrieveCachedSize();
|
||||||
|
mPreferenceController.setVolume(mSelectedStorageEntry.getVolumeInfo());
|
||||||
|
mPreferenceController.setUsedSize(cachedData.usedSize);
|
||||||
|
mPreferenceController.setTotalSize(cachedData.totalSize);
|
||||||
|
}
|
||||||
if (mSelectedStorageEntry.isPrivate()) {
|
if (mSelectedStorageEntry.isPrivate()) {
|
||||||
mStorageInfo = null;
|
mStorageInfo = null;
|
||||||
mAppsResult = null;
|
mAppsResult = null;
|
||||||
maybeSetLoading(isQuotaSupported());
|
if (mStorageCacheHelper.hasCachedSizeInfo()) {
|
||||||
|
mPreferenceController.onLoadFinished(mAppsResult, mUserId);
|
||||||
// To prevent flicker, sets null volume to hide category preferences.
|
} else {
|
||||||
// onReceivedSizes will setVolume with the volume of selected storage.
|
maybeSetLoading(isQuotaSupported());
|
||||||
mPreferenceController.setVolume(null);
|
// To prevent flicker, sets null volume to hide category preferences.
|
||||||
|
// onReceivedSizes will setVolume with the volume of selected storage.
|
||||||
|
mPreferenceController.setVolume(null);
|
||||||
|
}
|
||||||
|
|
||||||
// Stats data is only available on private volumes.
|
// Stats data is only available on private volumes.
|
||||||
getLoaderManager().restartLoader(STORAGE_JOB_ID, Bundle.EMPTY, this);
|
getLoaderManager().restartLoader(STORAGE_JOB_ID, Bundle.EMPTY, this);
|
||||||
@@ -141,6 +153,15 @@ public class StorageCategoryFragment extends DashboardFragment
|
|||||||
}
|
}
|
||||||
|
|
||||||
initializePreference();
|
initializePreference();
|
||||||
|
|
||||||
|
if (mStorageCacheHelper.hasCachedSizeInfo()) {
|
||||||
|
mIsLoadedFromCache = true;
|
||||||
|
if (mSelectedStorageEntry != null) {
|
||||||
|
refreshUi(mSelectedStorageEntry);
|
||||||
|
}
|
||||||
|
updateSecondaryUserControllers(mSecondaryUsers, mAppsResult);
|
||||||
|
setSecondaryUsersVisible(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initializePreference() {
|
private void initializePreference() {
|
||||||
@@ -156,6 +177,7 @@ public class StorageCategoryFragment extends DashboardFragment
|
|||||||
mIsWorkProfile = getArguments().getInt(ProfileSelectFragment.EXTRA_PROFILE)
|
mIsWorkProfile = getArguments().getInt(ProfileSelectFragment.EXTRA_PROFILE)
|
||||||
== ProfileSelectFragment.ProfileType.WORK;
|
== ProfileSelectFragment.ProfileType.WORK;
|
||||||
mUserId = Utils.getCurrentUserId(mUserManager, mIsWorkProfile);
|
mUserId = Utils.getCurrentUserId(mUserManager, mIsWorkProfile);
|
||||||
|
mStorageCacheHelper = new StorageCacheHelper(getContext(), mUserId);
|
||||||
|
|
||||||
super.onAttach(context);
|
super.onAttach(context);
|
||||||
}
|
}
|
||||||
@@ -164,11 +186,25 @@ public class StorageCategoryFragment extends DashboardFragment
|
|||||||
public void onResume() {
|
public void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
|
|
||||||
if (mSelectedStorageEntry != null) {
|
if (mIsLoadedFromCache) {
|
||||||
refreshUi(mSelectedStorageEntry);
|
mIsLoadedFromCache = false;
|
||||||
|
} else {
|
||||||
|
if (mSelectedStorageEntry != null) {
|
||||||
|
refreshUi(mSelectedStorageEntry);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPause() {
|
||||||
|
super.onPause();
|
||||||
|
// Destroy the data loaders to prevent unnecessary data loading when switching back to the
|
||||||
|
// page.
|
||||||
|
getLoaderManager().destroyLoader(STORAGE_JOB_ID);
|
||||||
|
getLoaderManager().destroyLoader(ICON_JOB_ID);
|
||||||
|
getLoaderManager().destroyLoader(VOLUME_SIZE_JOB_ID);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSaveInstanceState(Bundle outState) {
|
public void onSaveInstanceState(Bundle outState) {
|
||||||
outState.putParcelable(SELECTED_STORAGE_ENTRY_KEY, mSelectedStorageEntry);
|
outState.putParcelable(SELECTED_STORAGE_ENTRY_KEY, mSelectedStorageEntry);
|
||||||
@@ -188,6 +224,8 @@ public class StorageCategoryFragment extends DashboardFragment
|
|||||||
mPreferenceController.setVolume(mSelectedStorageEntry.getVolumeInfo());
|
mPreferenceController.setVolume(mSelectedStorageEntry.getVolumeInfo());
|
||||||
mPreferenceController.setUsedSize(privateUsedBytes);
|
mPreferenceController.setUsedSize(privateUsedBytes);
|
||||||
mPreferenceController.setTotalSize(mStorageInfo.totalBytes);
|
mPreferenceController.setTotalSize(mStorageInfo.totalBytes);
|
||||||
|
// Cache total size infor and used size info
|
||||||
|
mStorageCacheHelper.cacheTotalSizeAndUsedSize(mStorageInfo.totalBytes, privateUsedBytes);
|
||||||
for (int i = 0, size = mSecondaryUsers.size(); i < size; i++) {
|
for (int i = 0, size = mSecondaryUsers.size(); i < size; i++) {
|
||||||
final AbstractPreferenceController controller = mSecondaryUsers.get(i);
|
final AbstractPreferenceController controller = mSecondaryUsers.get(i);
|
||||||
if (controller instanceof SecondaryUserController) {
|
if (controller instanceof SecondaryUserController) {
|
||||||
|
Reference in New Issue
Block a user