记录近期在 Android 开发上遇到的一些深坑
最近在开发 App 测试的时候遇到了一些坑,在这里记录一下,防止以后再遇到时又要浪费时间。
1. Fragment 中的 onAttach 方法没有被调用
在 Android 5.0 (API 21) 系统手机上测试时 App 抛出了空指针异常,而在其他测试机(均等于或高于 Android 6.0)上运行正常。
经排查发现时 Fragment 中的 OnAttach 方法没有被调用。
原来 Android 在 API 23 以后重载了 Fragment 中的 OnAttach 方法。
之前的
1 |
|
被重载为了
1 |
|
而我在继承 Fragment 的类中只重写了第二个方法,也就是 API 23 以后的方法。
所以我们复写的 OnAttach 方法在 API 21 的手机上没有被调用。
只需要复写 onAttach(Activity activity) 方法,并且添加一句 SDK 版本判断。
1 |
|
问题解决。
2. 华为手机上 Logcat 全部显示 some logs have been lost
在一部华为手机上(Huawei GR3 HWTAG-L6753)上测试时 App 发生了 Crash,奇怪的是查看文件没有生成 CrashLog 文件。
于是连上 ADB 查看 Logcat,发现输出的全是
W/AEE : some logs have been lost

根据 StackOverflow 上的回答 android - Huawei, logcat not showing the log for my app? - Stack Overflow
Dial
*#*#2846579#*#*
and you will see a hidden menu. Go to the Project Menu > Background Setting > Log setting and define the log availability (log switch) and level (log level setting).
在拨号界面拨号 *#*#2846579#*#*
进入隐藏菜单开启 Log 输出以后,就能正常查看 Logcat 信息了。
(经测试开启后不需要重启手机,评论中有人提到部分手机重启手机将重置此设置)
记录近期在 Android 开发上遇到的一些深坑