Anr
应用程序未响应,程序弹框提示
解决方法:
1,不要让主线程干耗时的工作
2,不要让其它线程阻塞主线程的执行
3、发生死锁
比如一个消息循环执行的时间最好不超过100ms到200ms,可以给其它来做,如intentservicer
新加的功能最好能通过Systrace+traceview两款性能工具进行性能测试,这样能及时发现程序中耗时操作
如果anr发生,adb pull命令导出跟踪文件,发生无响应会在/数据/ANR/目录下生成trace.txt。
从中可以看到发生anr的进程id,时间,名称,各种线程信息,从中分析。
内存泄露-OOM[out of memory]
手机卡顿,程序崩溃,操作系统无响应
native,bitmap分配
dalivk,java堆
两者相加不能超过最大限制
size是需要的内存
allocated是分配了的内存
total超过单个内存最大限制会发生oom
原因,
图片过大导致oom,等比缩小图片,对图片使用弱引用
页面切换导致oom,去除页面大图片
查询数据库记得关闭游标
代码逻辑中缺失资源回收处理
图片资源没有及时回收
已经写了回收逻辑,但是还是oom
测试人员非常规操作导致程序没有走到相应的回收逻辑,旧资源无法回收,不断重复相同操作,新资源被不断重新申请,出现oom
crash-程序崩溃
crash是因为出现了异常