Android 8.0的缓存大小和缓存清理接口方法
获取缓存大小接口
主要这里的方法已经和7.0不兼容了。
importandroid.app.usage.UsageStats;
importandroid.app.usage.UsageStatsManager;
importandroid.content.Context;
importandroid.content.pm.PackageManager;
importandroid.os.Process;
importandroid.os.storage.StorageManager;
importjava.io.IOException;
importjava.util.ArrayList;
importjava.util.Map;
importandroid.app.usage.StorageStats;
importandroid.app.usage.StorageStatsManager;
publicstaticlonggetCacheSizeByAndroidO(ContextmContext,StringmPackageName){
StorageManagerstorageManager=(StorageManager)mContext.getSystemService(Context.STORAGE_SERVICE);
StorageStatsManagerstorageStatsManager=(StorageStatsManager)mContext.getSystemService(Context.STORAGE_STATS_SERVICE);
try{
StorageStatsstorageStats=storageStatsManager.queryStatsForPackage(StorageManager.UUID_DEFAULT,mPackageName,Process.myUserHandle());
returnstorageStats.getCacheBytes();
}catch(PackageManager.NameNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
return0L;
}
清除缓存接口
这里的接口和7.0保持一致
PackageManagermPm=mContext.getPackageManager();
//needandroid.permission.DELETE_CACHE_FILES
mPm.deleteApplicationCacheFiles(cacheItem.packageName,newIPackageDataObserver.Stub(){
@Override
publicvoidonRemoveCompleted(finalStringpackageName,finalbooleansucceeded)throwsRemoteException{
///
}
}
});
Andorid8.0Setting模块的源码参考
源码的缓存大小
importcom.android.internal.util.Preconditions; importcom.android.settings.utils.AsyncLoader; importcom.android.settingslib.applications.StorageStatsSource; importcom.android.settingslib.applications.StorageStatsSource.AppStorageStats; importjava.io.IOException; /** *FetchesthestoragestatsusingtheStorageStatsManagerforagivenpackageandusertuple. */ publicclassFetchPackageStorageAsyncLoaderextendsAsyncLoader{ privatestaticfinalStringTAG="FetchPackageStorage"; privatefinalStorageStatsSourcemSource; privatefinalApplicationInfomInfo; privatefinalUserHandlemUser; @Override publicAppStorageStatsloadInBackground(){ AppStorageStatsresult=null; try{ result=mSource.getStatsForPackage(mInfo.volumeUuid,mInfo.packageName,mUser); }catch(NameNotFoundException|IOExceptione){ Log.w(TAG,"Packagemayhavebeenremovedduringquery,failinggracefully",e); } returnresult; } ======================================================================================== packagecom.android.settings.applications; publicclassAppStorageSettingsextendsAppInfoWithHeader @Override publicvoidonLoadFinished(Loader loader,AppStorageStatsresult){ mSizeController.setResult(result); updateUiWithSize(result); } privatevoidupdateUiWithSize(AppStorageStatsresult){ }else{ longcodeSize=result.getCodeBytes(); longcacheSize=result.getCacheBytes(); longdataSize=result.getDataBytes()-cacheSize;
源码的清理缓存接口
mPm.deleteApplicationCacheFiles
packagecom.android.settings.applications; publicclassAppStorageSettingsextendsAppInfoWithHeader implementsOnClickListener,Callbacks,DialogInterface.OnClickListener, LoaderManager.LoaderCallbacks{ privatestaticfinalStringTAG=AppStorageSettings.class.getSimpleName(); privateClearCacheObservermClearCacheObserver; @Override publicvoidonClick(Viewv){ //清理缓存按钮 if(v==mClearCacheButton){ if(mAppsControlDisallowedAdmin!=null&&!mAppsControlDisallowedBySystem){ RestrictedLockUtils.sendShowAdminSupportDetailsIntent( getActivity(),mAppsControlDisallowedAdmin); return; }elseif(mClearCacheObserver==null){//Lazyinitializationofobserver mClearCacheObserver=newClearCacheObserver(); } mMetricsFeatureProvider.action(getContext(), MetricsEvent.ACTION_SETTINGS_CLEAR_APP_CACHE); //清理缓存 mPm.deleteApplicationCacheFiles(mPackageName,mClearCacheObserver); classClearCacheObserverextendsIPackageDataObserver.Stub{ publicvoidonRemoveCompleted(finalStringpackageName,finalbooleansucceeded){ finalMessagemsg=mHandler.obtainMessage(MSG_CLEAR_CACHE); msg.arg1=succeeded?OP_SUCCESSFUL:OP_FAILED; mHandler.sendMessage(msg); } }
Android7.0的缓存大小接口
PackageManagermPm=mContext.getPackageManager();
mPm.getPackageSizeInfo(mPackageName,newIPackageStatsObserver.Stub(){
@Override
publicvoidonGetStatsCompleted(PackageStatspStats,booleansucceeded)throwsRemoteException{
cacheTotalSize=pStats.cacheSize+pStats.externalCacheSize;
}
}
以上这篇Android8.0的缓存大小和缓存清理接口方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。