Merge "Fake the cache size to be 0 bytes when cleared." into oc-dev

This commit is contained in:
TreeHugger Robot
2017-04-12 01:25:21 +00:00
committed by Android (Google) Code Review
3 changed files with 47 additions and 2 deletions

View File

@@ -101,6 +101,8 @@ public class AppStorageSettings extends AppInfoWithHeader
private static final String KEY_URI_CATEGORY = "uri_category";
private static final String KEY_CLEAR_URI = "clear_uri_button";
private static final String KEY_CACHE_CLEARED = "cache_cleared";
// Views related to cache info
private Preference mCacheSize;
private Button mClearDataButton;
@@ -115,6 +117,7 @@ public class AppStorageSettings extends AppInfoWithHeader
private PreferenceCategory mUri;
private boolean mCanClearData = true;
private boolean mCacheCleared;
private AppStorageStats mLastResult;
private AppStorageSizesController mSizeController;
@@ -133,6 +136,9 @@ public class AppStorageSettings extends AppInfoWithHeader
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
mCacheCleared = savedInstanceState.getBoolean(KEY_CACHE_CLEARED, false);
}
addPreferencesFromResource(R.xml.app_storage_settings);
setupViews();
@@ -145,6 +151,12 @@ public class AppStorageSettings extends AppInfoWithHeader
updateSize();
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBoolean(KEY_CACHE_CLEARED, mCacheCleared);
}
private void setupViews() {
mComputingStr = getActivity().getText(R.string.computing_size);
mInvalidSizeStr = getActivity().getText(R.string.invalid_size_value);
@@ -523,6 +535,10 @@ public class AppStorageSettings extends AppInfoWithHeader
}
private void updateUiWithSize(AppStorageStats result) {
if (mCacheCleared) {
mSizeController.setCacheCleared(true);
}
mSizeController.updateUi(getContext());
if (result == null) {
@@ -539,7 +555,7 @@ public class AppStorageSettings extends AppInfoWithHeader
mClearDataButton.setEnabled(true);
mClearDataButton.setOnClickListener(this);
}
if (cacheSize <= 0) {
if (cacheSize <= 0 || mCacheCleared) {
mClearCacheButton.setEnabled(false);
} else {
mClearCacheButton.setEnabled(true);
@@ -562,6 +578,7 @@ public class AppStorageSettings extends AppInfoWithHeader
processClearMsg(msg);
break;
case MSG_CLEAR_CACHE:
mCacheCleared = true;
// Refresh size info
updateSize();
break;

View File

@@ -39,6 +39,7 @@ public class AppStorageSizesController {
@Nullable
private StorageStatsSource.AppStorageStats mLastResult;
private boolean mLastResultFailed;
private boolean mCachedCleared;
private long mLastCodeSize = -1;
private long mLastDataSize = -1;
private long mLastCacheSize = -1;
@@ -77,7 +78,7 @@ public class AppStorageSizesController {
mLastDataSize = dataSize;
mDataSize.setSummary(getSizeStr(context, dataSize));
}
long cacheSize = mLastResult.getCacheBytes();
long cacheSize = mCachedCleared ? 0 : mLastResult.getCacheBytes();
if (mLastCacheSize != cacheSize) {
mLastCacheSize = cacheSize;
mCacheSize.setSummary(getSizeStr(context, cacheSize));
@@ -100,6 +101,15 @@ public class AppStorageSizesController {
mLastResultFailed = result == null;
}
/**
* Sets if we have cleared the cache and should zero the cache bytes.
* When the cache is cleared, the cache directories are recreated. These directories have
* some size, but are empty. We zero this out to best match user expectations.
*/
public void setCacheCleared(boolean isCleared) {
mCachedCleared = isCleared;
}
private String getSizeStr(Context context, long size) {
return Formatter.formatFileSize(context, size);
}