package cn.itcast.testclear;
import java.lang.reflect.Method;
import android.app.Activity;
import android.content.pm.IPackageStatsObserver;
import android.content.pm.PackageManager;
import android.content.pm.PackageStats;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
public class DemoActivity extends Activity {
private PackageManager pm;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
pm = getPackageManager();
try {//使用了反射方法:
Method method = PackageManager.class.getMethod("getPackageSizeInfo", new Class[]{String.class,IPackageStatsObserver.class});
method.invoke(pm, new Object[]{"cn.itcast.mobilesafe",new IPackageStatsObserver.Stub() {
public void onGetStatsCompleted(PackageStats pStats, boolean succeeded)
throws RemoteException {
System.out.println("----------------");
long cachesize = pStats.cacheSize;
long codesize = pStats.codeSize;
long datasize = pStats.dataSize;
System.out.println("datasize"+datasize);
System.out.println("codesize"+codesize);
System.out.println("cachesize"+cachesize);
}
}});
} catch (Exception e) {
e.printStackTrace();
}
/* Method[] methods = PackageManager.class.getMethods();
for (int i = 0; i < methods.length; i++) {
if ("getPackageSizeInfo".equals(methods[i].getName())) {
Class<?>[] paras = methods[i].getParameterTypes();
for(int j=0;j<paras.length;j++){
System.out.println(paras[j]);
}
}
}*/
}
}
其中有两个aidl文件需呀放到
android.content.pm包下
这两个文件来自android源码中
/*
**
** 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);
}
/* //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;
删除sd卡缓存的方法是:
需要收集各个应用在sd卡创建的数据库然后 获取sd卡目录进行匹配并删除
屏幕适配的三种方案
1.尽量使用dip sp等 尽力使用RelativeLayout 和线性布局
2.避免在代码中控制视图 如果不能避免可能需要 写一个判断分辨率来设定相应的像素
(获取分辨率 然后
if(854*768) 使用40 ;
if(320*480) 使用30;
)
3.layout - 1024*360 使用文件夹