ANDROID学习 获取应用程序的缓存等信息

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 使用文件夹



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值