异常6里面,叙述了取应用大小在api26以上以及以下要用不同的方法,然后我换完方法之后继续踩坑
坑1:应用大小和系统显示大小不同
手机:honor 6x android 7.0, 没有什么问题,获取应用大小之后(获取应用大小方法见异常记录(6))以这样的方式转换单位
public String getCodeSize(){
DecimalFormat df = new DecimalFormat("0.00");
if (mCodeSize*1.0 / 1024 < 0) {
return "Calculating...";
} else if (mCodeSize*1.0 / 1024 == 0) {
return mCodeSize + "B";
} else if ((mCodeSize / (1024 * 1024)) <= 0) {
return df.format((mCodeSize / 1024.0)) + "KB";
}else {
return df.format(((mCodeSize / 1024.00) / 1024.00)) + "MB";
}
}
项目显示大小:
系统显示大小:
如图显示,并没有什么问题
但是,当我换用另一部手机
手机:小米6,android8.0
代码打印大小:

项目显示大小:
系统显示大小:
明显,一个是除以1024一个是除以1000……
然后我百度不知道这个要怎么搜,跑去问朋友了,朋友给我提供了一下方法,实测可用
public String getCodeSize(Context context) {
return Formatter.formatFileSize(context, mCodeSize);
}
这里一个小问题,这个方法自带的kb单位,是kB,我们需要的是KB,一个大写,一个小写,自己替换一下就好
坑2:
如图

代码里面是这个大小:

这个大小和系统大小相差甚远,暂时还不知道原因和解决方法,等我解决回来更新(咕咕咕)
本文探讨了在不同Android设备上获取应用大小时遇到的问题,包括应用大小与系统显示大小不一致的情况,特别是在API26以上版本。通过对比两部不同型号手机的测试结果,提出了解决方案并分享了如何正确使用Formatter.formatFileSize方法来适配不同设备的显示需求。

被折叠的 条评论
为什么被折叠?



