반사를 이용하여 프로그램의 캐시 크기, 응용 프로그램 크기, 데이터 크기를 얻고, 반사를 이용하여 캐시를 제거하여 모두 정리한다.
캐시 파일 크기를 읽으려면 추가 권한이 필요합니다: GETPACKAGE_SIZE
먼저 IPackageStatsObserver를 실행합니다.aidl 및 PackageStats.aidl 파일을android로 복사합니다.content.pm 싸주세요.
재반사 획득 방법, 후 호출
Method getPackageSizeInfoMethod = null;
Method[] methods = PackageManager.class.getMethods();
for (Method method : methods) {
if("getPackageSizeInfo".equals(method.getName())){
getPackageSizeInfoMethod = method;
}
}
List<PackageInfo> infos = pm.getInstalledPackages(0);
for (PackageInfo info : infos) {
try {
getPackageSizeInfoMethod.invoke(pm, info.packageName,new myObserver());
} catch (Exception e) {
e.printStackTrace();
}
}
이 방법의 다음 매개 변수는 원격 서비스에 사용되며, 클래스 계승 원격 서비스를 쓴다.
private class myObserver extends IPackageStatsObserver.Stub{
@Override
public void onGetStatsCompleted(PackageStats pStats, boolean succeeded)
throws RemoteException {
//
long cacheSize = pStats.cacheSize;
//
long codeSize = pStats.codeSize;
//
long dataSize = pStats.dataSize;
}
}
반사를 사용하여 캐시를 제거하려면 다음과 같이 하십시오.
캐시 파일을 삭제하려면 추가 권한이 필요합니다:DELETECACHE_FILES
이 권한은 시스템 프로그램만 사용할 수 있기 때문에 우리는 사용할 수 없습니다...
iv_delete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
Method method = PackageManager.class.getMethod("deleteApplicationCacheFiles",
String.class,IPackageDataObserver.class);
method.invoke(pm, pStats.packageName,new IPackageDataObserver.Stub(){
@Override
public void onRemoveCompleted(String packageName, boolean succeeded)
throws RemoteException {
}
});
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
일반 소프트웨어는 시스템 설정 인터페이스에 클릭하여 수동으로 청소한다.
모두 정리:
반사로freeStorageAndNotify를 얻는 방법으로 원클릭으로 청소
Method[] methods = PackageManager.class.getMethods();
for (Method method : methods) {
if("freeStorageAndNotify".equals(method.getName())){
try {
//
method.invoke(pm, Long.MAX_VALUE,new IPackageDataObserver.Stub(){
@Override
public void onRemoveCompleted(String packageName, boolean succeeded)
throws RemoteException {
}
});
} catch (Exception e) {
e.printStackTrace();
}
return;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.