异常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:
如图
代码里面是这个大小:
这个大小和系统大小相差甚远,暂时还不知道原因和解决方法,等我解决回来更新(咕咕咕)