Android常见问题、定位、解决

简介

安卓常见问题的功能表现
问题定位
解决优化方案
监控治理
5wy分析法
RCA分析法 从分析方法开始回答
......

1. Android app启动时黑屏或者白屏的原因及解决方案

  1. 产生原因:
    因为还没加载到布局文件,就已经显示了window窗口背景_预览窗口,黑白屏就是window的窗口背景(为了告诉用户已经点开app了,只是还没有加载完,不用重复点app图标了)
  2. 解决办法:
    1)设置Style -设置背景图
    2)设置透明Theme
2. 程序停止运行可能的原因

内存不足、、、、

3. App界面卡死

原因:app一级页面,再返回是没有任何相关的页面,由于这个原因造成页面的卡死,造成了页面不响应
解决:在一级页面分别添加禁用和开启右滑返回手势
http://www.51testing.com/html/22/100922-3722271.html
https://www.cnblogs.com/laly/p/5282796.html log分析

安卓日志如crash收集实现

https://blog.csdn.net/h1130189083/article/details/79137746
收集,统计,分析
UncaughtExceptionHandler 类
uncaughtException()
handleException()
Crash数据表结构,包含哪些信息

4. ANR

https://blog.csdn.net/Mirage520/article/details/42919127
iowait block memoryleak
日志分析关键词: ANR Fatal(异常退出,强制关闭_FC) Thread =>回代码
造成ANR的场景:5(KeyDispatchTimeout activity) 10 20
造成ANR的原因:

  1. 当前的事件没有机会得到处理(UI主线程 其它线程占用高 主线程没有抢占到cpu Looper handler MessageQueue)
  2. 当前的事件正常处理,没有及时完成

如何避免ANR:
UI主线程避免耗时操作,只做UI问题
耗时的工作放入子线程
Activity生命周期尽量不要做耗时的操作,如onCreate onResume OnPause(保持状态数据之类)

5. 弱网络下常见问题

弱网络:带宽(上行 下行) 延时 丢包等情况

用户登录应用时,下载初始化数据,过程太慢退出再重新登录,造成数据不一致

用户数据上传过程中,弱网络不稳定,再次联网后导致重复写入,形成脏数据

弱网络环境下,用户请求页面时间较长,等待的过程中,页面上的控件仍然可以操作,用户点击控件时,出现应用闪退现象
产生原因: 没有对数据加载流程进行判断,直接暴露控件,当出现依赖数据的控件操作时,没有在数据返回之前做兼容处理
解决: 当数据加载完全后,再把控件置为可操控
同类型bug:缓存不足把activity kill掉,handler时间过长
关注弱网络下的中间状态

搜索情况下,第一次请求,第二次请求,由于弱网络原因导致第二条返回数据被第一条覆盖

内存问题

当系统因为内存紧张杀死非前台进程(并非真正杀死),然后用户将被系统杀死的非前台app带回前台,如果这个时候有UI是呈现在Fragment中,那么会因为restore造成Fragment需要通过反射实例对象,从而将之前save状态还原。。。。

网络下载,开启多线程,下载大量图片(超过一百张),未有异常保护,导致OOM

常见Crash问题总结

Checked Exception 和 Uncheckd Exception
RuntimeException及其子类为运行时异常
没有try...catch的异常为Uncaught异常

Crash捕获机制: UncaughtExceptionHandler => public abstract void uncaughtException(Thread thread, Throwable ex)
通过实现自己的异常handler,为UI主线程添加handler,这样整个程序中Activity、Service中出现的UncaughtException事件都可以被处理
以此来实现异常数据的上报云端

public static void setDefaultUncaughtExceptionHandler(UncaughtExceptionHandler handler)
捕获异常后上传,堆栈信息
java预发相关异常
  1. NullPointerException: 空指针异常,调用了未存在的对象或者不存在已销毁的对象,这个错误经常出现在常见图片,调用数组这些操作中
    一些全局变量,一旦发生内存回收,这些全局变量就会被置空
  1. ClassNotFoundException: 指定的类不存在,如类名替换,类名冲突等
  1. IndexOutOfBoundsException: 索引越界
  1. IllegalArgumentException:非法参数
  1. NumberFormatException: 字符串转为数字类型时异常
  1. java.lang.OutOfMemoryError:
  1. java.lang.StackOverflowError:堆栈溢出,当一个应用递归调用层次太深而导致堆栈溢出
  1. ClassCastException:
    rom api
  1. 试图调用一个空对象:
    Attempt to invoke virtual method on a null object reference
  1. ClassNotFoundException:
    Classloader -> classname 但由于某些类混淆了,导致找不到类
Activity相关异常
  1. 找不到Activity
    加载某个商品图标,在未加载成功的情况下,退出activity.待图标加载成功后,出现crash
    进行判空操作
  1. 不能实例化Activity

AndroidManifest.xml中未注册

序列化相关异常
窗口句柄泄漏

窗口还在,activity被销毁了
activity A依附于 Activity B,当依附的ActivityB 产生错误时,Activity因为没有了靠山而产生错误(或者调用了一个已经被finish()的Activity)

不建议在子线程更新UI,会因此产生不可预知的错误

资源相关的异常
系统碎片化相关异常
  1. 一方面是和Android系统的版本不同有关
  2. 另一方面和ROM的不同有关
  1. NosuchMethodError
    java.lang.NoSuchMethodError
    解决: Android Lint检查是否有警告
    做版本判断
SecurityException
  1. Intent中图片太大
  1. 动态加载其他apk的activity
  1. No permission to modify thread
    Android 4.0.4 系统都会有这个问题
    有些手机的ROM出于安全考虑,则会禁止这些权限

Package manager has died

  1. Package manager has died at ...
    PackageManger如果已经died,说明该进程已经不存在了,此时任何向它进行的请求都将失效,让设备重启可能是个好方法,
    App本身已经处于崩溃状态,这个时候如果App已经弹出错误框,再调用PackageManager也会出错或卡死
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容

  • 介绍自己负责的部分,如何实现的。 自定义view viewGroup activity的启动流程 事件传递及滑动冲...
    东经315度阅读 1,211评论 1 4
  • 1.要做一个尽可能流畅的ListView,你平时在工作中如何进行优化的? ①Item布局,层级越少越好,使用hie...
    fozero阅读 728评论 0 0
  • 线程和进程的区别是啥 详见 http://www.jianshu.com/p/04c3706521b5 线程切换如...
    MrWang915阅读 1,154评论 0 2
  • 0.Android手机操作系统的四层架构? Applications , Application Framewor...
    lucas777阅读 7,846评论 0 16
  • 自我感觉培训能力这块,自己的能力欠缺,有待于提高,可以根据适合自己店面的制度,把自己平时所学习的知识,充分利...
    潍坊泰华DDM店刘云阅读 172评论 0 0