Android系統緩衝相關

來源:互聯網
上載者:User

標籤:

1. 如何擷取每個應用的快取檔案及大小

PackageManager pm = context.getPackageManager();try {    Method mmethod = PackageManager.class.getMethod("getPackageSizeInfo", String.class,IPackageStatsObserver.class);    List<PackageInfo> packageInfos = pm.getInstalledPackages(0);        // 資料變化的觀察者,來自IPackageStatsObserver.Stub    DataChangedObserver dataChangedObserver = new DataChangedObserver();        for (PackageInfo packageInfo : packageInfos) {        // 系統的方法背hide,因此使用反射機制來擷取該方法        mmethod.invoke(pm, packageInfo.packageName, dataChangedObserver);    }} catch (Exception e) {    e.printStackTrace();}
/** * 掃描結果的觀察者 需要許可權 <uses-permission * android:name="android.permission.GET_PACKAGE_SIZE"/> *  * @author chenhao24 *  */private class DataChangedObserver extends IPackageStatsObserver.Stub {    @Override    public void onGetStatsCompleted(PackageStats pStats, boolean succeeded) throws RemoteException {        if (!succeeded) {            return;        }                // 擷取緩衝大小        long cacheSize = pStats.cacheSize;                // 擷取應用的名稱        String packageName = pStats.packageName;    }}

IPackageStatsObserver.Stub 的引入.手動建android.content.pm包拷貝檔案到此目錄下

2. 如何清空緩衝?可以使用上面類似的方法反射進行相關的操作,但是此操作需要系統層級的應用才可以清理,市面上的軟體如何做到清理的呢?跳到應用資訊頁去手動的清理,但是市面上的軟體做到了可以清理全部快取檔案,利用了Android系統的一個機制,當向系統申請空間(很大超過了目前系統閒置大小)時,如果系統沒有足夠的空間可供使用,系統會刪除所有應用的快取檔案,進而做到了清理全部快取檔案的目的。

PackageManager pm = context.getPackageManager();try {    // 使用反射    Method mmethod = PackageManager.class.getMethod("freeStorageAndNotify", Long.class,IPackageDataObserver.class);    mmethod.invoke(pm, Integer.MAX_VALUE,new ApplyDataObserver());} catch (Exception e) {    e.printStackTrace();}
/** * 申請空間,消除緩衝的資料觀察者 * @author chenhao24 * */private class ApplyDataObserver extends IPackageDataObserver.Stub{    @Override    public void onRemoveCompleted(String packageName, boolean succeeded)throws RemoteException {        if(! succeeded){            Log.i(TAG,"release sys cache error");            return;        }        Log.i(TAG,"release sys cache success");    }}

IPackageDataObserver.Stub擷取與IPackageStatsObserver.Stub類似

Android系統緩衝相關

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.