Android清理緩衝功能實現

來源:互聯網
上載者:User

Android清理緩衝功能實現

我們都知道在Android的設定->應用程式中可以查看應用程式的相關資訊,其中有一個功能是清除緩衝。


怎麼實現這些功能呢,從Android的setting源碼中可以得到相關資訊。

實現如下:

Java代碼:

package com.wang.clearcache;import java.lang.reflect.Method;import android.os.Bundle;import android.os.RemoteException;import android.app.Activity;import android.content.pm.IPackageStatsObserver;import android.content.pm.PackageManager;import android.content.pm.PackageStats;public class MainActivity extends Activity {private PackageManager pm;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);pm = getPackageManager();//反射try {Method method = PackageManager.class.getMethod("getPackageSizeInfo", new Class[]{String.class,IPackageStatsObserver.class});method.invoke(pm, new Object[]{"com.wang.clearcache",new IPackageStatsObserver.Stub() {@Overridepublic void onGetStatsCompleted(PackageStats pStats, boolean succeeded)throws RemoteException {long cachesize = pStats.cacheSize;long codesize = pStats.codeSize;long datasize = pStats.dataSize;System.out.println("cachesize:"+ cachesize);System.out.println("codesize:"+ codesize);System.out.println("datasize"+ datasize);}}});} catch (Exception e) {e.printStackTrace();}}}

因為得到緩衝資訊需要加入android.permission.GET_PACKAGE_SIZE的許可權

Androidmainifest.xml

                                                                                        

因為使用在代碼中使用了PackageManager的getPackageSizeInfo這個函數,但是這個方法是不對外公開的函數,所有我們需要使用發射來調用這個函數,在該方法的內部回調了onGetStatsCompleted(PackageStats pStats, boolean succeeded)這個方法,通過該方法的pStats參數可以得到應用的緩衝,資料緩衝,代碼容量緩衝,在使用的過程中需要用到系統的aidl檔案

IPackageStatsObserver:

/***** Copyright 2007, The Android Open Source Project**** Licensed under the Apache License, Version 2.0 (the "License");** you may not use this file except in compliance with the License.** You may obtain a copy of the License at****     http://www.apache.org/licenses/LICENSE-2.0**** Unless required by applicable law or agreed to in writing, software** distributed under the License is distributed on an "AS IS" BASIS,** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.** See the License for the specific language governing permissions and** limitations under the License.*/package android.content.pm;import android.content.pm.PackageStats;/** * API for package data change related callbacks from the Package Manager. * Some usage scenarios include deletion of cache directory, generate * statistics related to code, data, cache usage(TODO) * {@hide} */oneway interface IPackageStatsObserver {        void onGetStatsCompleted(in PackageStats pStats, boolean succeeded);}

PackageStats:

/* //device/java/android/android/view/WindowManager.aidl**** Copyright 2007, The Android Open Source Project**** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. ** You may obtain a copy of the License at ****     http://www.apache.org/licenses/LICENSE-2.0 **** Unless required by applicable law or agreed to in writing, software ** distributed under the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the License for the specific language governing permissions and ** limitations under the License.*/package android.content.pm;parcelable PackageStats;


最後啟動並執行結果:

下載:

http://download.csdn.net/detail/wangbiaohome/8026535

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.