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的缓存大小和缓存清理接口方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。