public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private ImageView iv;
private RelativeLayout clearLayout, versionLayout;
private TextView versionTv, cacheTv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initData();
}
/**
* 初始化缓存大小和版本信息
*/
private void initData() {
ImageLoader.getInstance().displayImage("图片地址", iv);
initVersion();
initCaches();
}
/**
* 初始化缓存信息
*/
private void initCaches() {
long fileSize = 0;
//获取data/data/包名/cache文件大小
fileSize += getDirSize(getCacheDir());
//获取files文件夹大小
fileSize += getDirSize(getFilesDir());
cacheTv.setText(formatFileSize(fileSize));
System.out.println("cachedir" + getCacheDir());
System.out.println("filesdir" + getFilesDir());
}
/**
* 初始化版本信息
*/
private void initVersion() {
//版本信息
try {
PackageManager manager = getPackageManager();
PackageInfo packageInfo = manager.getPackageInfo(getPackageName(), 0);
versionTv.setText("V" + packageInfo.versionName);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
}
private void initView() {
iv = (ImageView) findViewById(R.id.iv);
clearLayout = (RelativeLayout) findViewById(R.id.clear);
versionLayout = (RelativeLayout) findViewById(R.id.version);
cacheTv = (TextView) findViewById(R.id.tv_cache);
versionTv = (TextView) findViewById(R.id.tv_version);
clearLayout.setOnClickListener(this);
versionLayout.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.clear:
final AlertDialog.Builder clearBuilder = new AlertDialog.Builder(this);
clearBuilder.setTitle("清理缓存");
clearBuilder.setMessage("确定要清理缓存?");
clearBuilder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
clearBuilder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
clearCaches();
}
});
clearBuilder.show();
break;
case R.id.version:
final AlertDialog.Builder versionBuilder = new AlertDialog.Builder(this);
versionBuilder.setTitle("检查版本");
versionBuilder.setMessage("确定要版本更新?");
versionBuilder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
versionBuilder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this, "走版本更新逻辑", Toast.LENGTH_SHORT).show();
}
});
versionBuilder.show();
break;
}
}
/**
* 清理缓存
*/
private void clearCaches() {
//清除cache目录下缓存
clearCaches(getCacheDir());
//清除files目录下缓存
clearCaches(getFilesDir());
File sharedDir = new File("/data/data/" + getPackageName() + "/shared_prefs");
clearCaches(sharedDir);
//清除成功后,重新设置下页面数据
cacheTv.setText("0B");
}
/**
* 清除缓存逻辑
*
* @param dir
*/
private void clearCaches(File dir) {
//判断file是文件夹
if (dir != null && dir.isDirectory()) {
//得到该目录下所有文件
File[] f = dir.listFiles();
//遍历删除该目录下所有文件
if (f!=null&&f.length>0){
for (File file1 : f) {
//删除方法
file1.delete();
}
}
Toast.makeText(MainActivity.this, "清除成功", Toast.LENGTH_SHORT).show();
}
}
/**
* 获取目录文件大小
*
* @param dir
* @return
*/
public static long getDirSize(File dir) {
if (dir == null) {
return 0;
}
if (!dir.isDirectory()) {
return 0;
}
long dirSize = 0;
File[] files = dir.listFiles();
for (File file : files) {
if (file.isFile()) {//如果是文件的,累加大小
dirSize += file.length();
} else if (file.isDirectory()) {//如果是目录,累加大小
dirSize += file.length();
dirSize += getDirSize(file); // 递归调用继续统计
}
}
return dirSize;
}
/**
* 转换文件大小
*
* @param fileS
* @return B/KB/MB/GB
*/
public static String formatFileSize(long fileS) {
DecimalFormat df = new DecimalFormat("#.00");//保留两位小数
String fileSizeString = "";
if (fileS < 1024) {
fileSizeString = df.format((double) fileS) + "B";
} else if (fileS < 1048576) {
fileSizeString = df.format((double) fileS / 1024) + "KB";
} else if (fileS < 1073741824) {
fileSizeString = df.format((double) fileS / 1048576) + "MB";
} else {
fileSizeString = df.format((double) fileS / 1073741824) + "G";
}
return fileSizeString;
}
}