[FAQ09104]进入应用界面后发现会闪屏,此时要如何定位是否是relaunch activity引起的闪屏呢

[DESCRIPTION]

进入应用界面后发现会闪屏,此时要如何定位是否是relaunch activity引起的闪屏呢?

[SOLUTION]

1 对于这类问题,抓取log时记得要打开AMS的log开关:

adb shell dumpsys activity log a on

请在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。

举例:

ActivityManagerChecking 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造成的闪屏。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值