zoukankan      html  css  js  c++  java
  • Launcher Activity在开机时重新启动两次解决的方法

    今天在看log的时候发现,Launcher activity会被onDestroy掉一次。然后再重新启动。

    可能原因推測:

    1.横竖屏切换

    2.MCC MNC等Configuration改变引起的 MCC(移动国家码)和 MNC(移动网络码)


    因为当时的Launcher设置为强制横屏了。应该是不会引起重新启动的。

    对于Configuration改变系统会发一个android.intent.action.CONFIGURATION_CHANGED的广播

    于是就做了一个广播接收器去检測是不是因为Configuration改变引起的(后来发现Launcher本身有监听这个广播)

    果然发现MCC值由0(没有定义)变为460(中国)


    原因已经初步确定了,怎么才干让activity不重新启动呢?

    既然是activity重新启动,那就先去看一下activity有什么属性能够防止重新启动....


    运气实在是好,刚好有这么个属性:

    android:configChanges=["mcc", "mnc", "locale",
                                     "touchscreen", "keyboard", "keyboardHidden",
                                     "navigation", "screenLayout", "fontScale", "uiMode",
                                     "orientation", "screenSize", "smallestScreenSize"]

    官方的解释是这种:

    Lists configuration changes that the activity will handle itself. When a configuration change occurs at runtime, the activity is shut down and restarted by default, but declaring a configuration with this attribute will prevent the activity from being restarted. Instead, the activity remains running and itsonConfigurationChanged() method is called.

    大致意思也就是说:

        那些被列举的属性configuration改变时activity是否保存自己的状态。当应用发生了configuration改变,默认情况下activity将关闭并重新启动自身,可是假设定义了这个属性。activity将不必重新启动。它将保持执行状态同一时候调用onConfigurationChanged()方法。也就是说当不配置android:configChanges="mcc|mnc"时,当mcc或mnc的值发生改变的时候,会重新启动activity,而且onConfigurationChanged()不会被调用


    果然配置了这个属性后Launcher Activity就不会在开机时候启动两次了。

  • 相关阅读:
    17点50分系列-如何平静的工作
    Java之简单的聊天工具
    伪分布式环境下命令行正确运行hadoop示例wordcount
    Linux 从 sar 到 sar2html 的认识
    telnet简单操作 模拟请求
    3D跑酷游戏《月影忍者之疾风狂逃》
    [每日一题] OCP1z0-047 :2013-07-24 子查询――外查询与内查询的执行顺序
    思科27亿美元收购网络安全公司Sourcefire
    利用Format函数格式化时间和日期
    HI3531网络tftp、nfs加载 分类: arm-linux-Ubuntu HI3531 2014-01-03 09:11 826人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/7142768.html
Copyright © 2011-2022 走看看