[FAQ09104]进入应用界面后发现会闪屏,此时要如何定位是否是relaunch activity引起的闪屏呢
2015-05-22 10:54
204 查看
[DESCRIPTION]
进入应用界面后发现会闪屏,此时要如何定位是否是relaunch activity引起的闪屏呢?
[SOLUTION]
1 对于这类问题,抓取log时记得要打开AMS的log开关:
adb shell dumpsys activity log a on
2 请在main log里搜索Relaunching关键字,看下这个Activity是否有被Relaunching,如果是,那么闪屏就是这个原因了。
3 确定是Relaunching造成的问题后,要如何进一步定位问题呢?
AMS会relaunching activity的原因是:
config发生变化,而activity没有监听对应的config,AMS就会relaunch这个activity,现象上来讲就是屏幕会闪。
我们可以从log里查看下是哪些config发生了变化,然后请app端监听这个config,重写onConfiguartionChanged这个函数来处理config的变化。那么AMS就不会去relaunch这个activity了。
Apk监听config的方法为:
在apk的androidManifest.xml里设定
<android:configChanges=“layout_direction|locale|….”>
对于检查是哪些config发生变化,可以看main log。
举例:
V ActivityManager: Checking to restart yuku.perekammp3.ac.DaftarActivity: changed=0x2004, handles=0x4a4, newConfig={1.0
460mcc2mnc zh_CN ldltr sw320dp w320dp h508dp 240dpi nrml long port finger -keyb/v/h dpad/v skin=/system/framework/framework-res.apk s.11}
请注意红色字体:changed=0x2004
这个changed的值可以在ActivityInfo.java中查询,具体是CONFIG_开头的值。表示的含义就是当前这些config发生了变化。
比如0x2004就是CONFIG_LOCALE|CONFIG_LAYOUT_DIRECTION
注:
1 apk可以监听的config,请查询google的说明文档或者configuration class里的定义
Google的说明文档: http://developer.android.com/guide/topics/manifest/activity-element.html 2 闪屏有很多原因,这里描述的只是一种。即AMS Relaunch Activity造成的闪屏。
进入应用界面后发现会闪屏,此时要如何定位是否是relaunch activity引起的闪屏呢?
[SOLUTION]
1 对于这类问题,抓取log时记得要打开AMS的log开关:
adb shell dumpsys activity log a on
2 请在main log里搜索Relaunching关键字,看下这个Activity是否有被Relaunching,如果是,那么闪屏就是这个原因了。
3 确定是Relaunching造成的问题后,要如何进一步定位问题呢?
AMS会relaunching activity的原因是:
config发生变化,而activity没有监听对应的config,AMS就会relaunch这个activity,现象上来讲就是屏幕会闪。
我们可以从log里查看下是哪些config发生了变化,然后请app端监听这个config,重写onConfiguartionChanged这个函数来处理config的变化。那么AMS就不会去relaunch这个activity了。
Apk监听config的方法为:
在apk的androidManifest.xml里设定
<android:configChanges=“layout_direction|locale|….”>
对于检查是哪些config发生变化,可以看main log。
举例:
V ActivityManager: Checking to restart yuku.perekammp3.ac.DaftarActivity: changed=0x2004, handles=0x4a4, newConfig={1.0
460mcc2mnc zh_CN ldltr sw320dp w320dp h508dp 240dpi nrml long port finger -keyb/v/h dpad/v skin=/system/framework/framework-res.apk s.11}
请注意红色字体:changed=0x2004
这个changed的值可以在ActivityInfo.java中查询,具体是CONFIG_开头的值。表示的含义就是当前这些config发生了变化。
比如0x2004就是CONFIG_LOCALE|CONFIG_LAYOUT_DIRECTION
注:
1 apk可以监听的config,请查询google的说明文档或者configuration class里的定义
Google的说明文档: http://developer.android.com/guide/topics/manifest/activity-element.html 2 闪屏有很多原因,这里描述的只是一种。即AMS Relaunch Activity造成的闪屏。
相关文章推荐
- 转 ios 里如何判断当前应用的定位服务是否可用
- 如何判断应用是否允许开启定位
- 如何获取系统Home(Launcher)应用判断用户是否处于home界面
- ios 里如何判断当前应用的定位服务是否可用
- ios 里如何判断当前应用的定位服务是否可用
- 【Android】进入应用和切换界面时闪屏的问题
- 转 ios 里如何判断当前应用的定位服务是否可用
- 获取通知栏权限是否开启和进入系统设置界面,应用详情
- ios 里如何判断当前应用的定位服务是否可用
- ios 里如何判断当前应用的定位服务是否可用
- ios 里如何判断当前应用的定位服务是否可用
- 【Android】首次进入应用时加载引导界面
- ubuntu10.10 驱动安装(解决显卡驱动引起的不能进入图形界面)
- iOS用户点击推送消息进入应用后,如何跳转到对应的ViewController
- 如何获得你的准确位置及iphon手机应用定位不准确原因分析
- 【Android】首次进入应用时加载引导界面
- 如何测试纯软双机是否能稳定在应用平台上
- 如何判断 Android 应用的 Apk 签名是否一致?
- [MySQL FAQ]系列 -- 如何快速比较查询结果是否一致