안 드 로 이 드 가 설 치 된 응용 프로그램의 크기 를 어떻게 얻 는 지 분석 합 니 다.

응용 차원 에서 어떻게 이미 설 치 된 응용 크기 를 얻 습 니까?인터넷 에서 찾 아 보 니 두 가지 방법 이 있 습 니 다.1.data 디 렉 터 리 에 해당 하 는 가방 을 직접 받 은 다음 에 File.length()방법 으로 얻 을 수 있 습 니 다.그리고 설정 에 표 시 된 크기 와 다 를 수 있 습 니 다.2.설정 에 있 는 소스 코드 를 반사 호출 하 는 방법 으로 PackageStats 류 의 인 스 턴 스 를 얻 을 수 있 습 니 다.두 가지 방법 모두 사용 하고 싶 지 않 습 니 다.나중에 스스로 해결 방법 을 찾 았 습 니 다.PackageManager 류 에는 getPackage SizeInfo 방법 이 있 습 니 다

public abstract void getPackageSizeInfo(String packageName,
            IPackageStatsObserver observer);
이 방법 은 hide 입 니 다.스스로 컴 파일 한 안 드 로 이 드 2.3 프레임 워 크 는 jar 패 키 지 를 복사 합 니 다.프레임 워 크 를 library 에 가 져 오기 만 하면 기본 안 드 로 이 드 lib 위 에 자신 이 컴 파일 한 프레임 워 크 를 우선 사용 할 수 있 습 니 다.사실은 자신의 응용 층 이 프레임 워 크 의 인 터 페 이 스 를 호출 할 수 있 도록 하 는 것 입 니 다.framework 다운로드:여 기 를 클릭 하 십시오다운로드 한 후 lib 를 추가 한 후 classes.jar 를 이 lib 에 추가 합 니 다.그림 참조:

그리고 자신의 lib up 을 sdk 가 제공 하 는 Android 2.3.3 위 에 올 립 니 다.Add External JARs 를 직접 사용 하여 가 져 올 수 없 음 을 주의 하 십시오.

다음은 바로 사용 방법 입 니 다.

pm.getPackageSizeInfo(packageInfo.packageName,
     new IPackageStatsObserver.Stub() {
      public void onGetStatsCompleted(PackageStats stats,
        boolean succeeded) {
       Log.v("King", stats.codeSize);
       Log.v("King", stats.dataSize);
       Log.v("King", stats.cacheSize);
      }
     });
첫 번 째 매개 변 수 는 가방 이름 이 므 로 모두 가 얻 을 수 있 을 것 입 니 다.두 번 째 매개 변 수 는 AIDL 생 성 을 실현 하 는 JAVA 인터페이스의 익명 내부 클래스 다.리 셋 방법 에서 프로그램 크기 데 이 터 를 처리 할 수 있 습 니 다.stats.codeSize:응용 프로그램 크기 stats.dataSize:데이터 크기 stats.cache Size:캐 시 크기 는 일반적으로 모두 listView 로 모든 응용 프로그램의 크기 를 표시 할 수 있 으 며,getPackageSizeInfo 방법 을 호출 하면 즉시 값 을 받 을 수 없 기 때문에 다른 데이터 와 비동기 로 표시 해 야 합 니 다.handler 를 통 해 데 이 터 를 보 낸 후 Adapter 의 notifyDataSetChanged()방법 으로 디 스 플레이 크기 를 업데이트 할 수 있 습 니 다.마 운 트 해제,캐 시 제거 등 방법 을 쓰 지 않 고 설정 에 있 는 응용 관리 인터페이스 로 바로 이동 할 수 있 는 항목 을 클릭 하고 싶 을 수도 있 습 니 다.원본 코드 를 설정 하 는 방법 은 다음 과 같 습 니 다.옮 겨 와 서 그대로 사용 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기