Android应用设置为Launcher时onCreate启动俩次的问题
2015-01-20 09:26
1341 查看
这几天有个需求就是把自己的应用程序要设置为Launcher的形式,设置后onCreate就会启动俩次,在网上找了资料后说是横竖屏设置造成的先说结果:在MainAcitivity里设置android:configChanges="mcc|mnc"就能解决问题的。
今天在看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就不会在开机时候启动两次了。
以上方法我测试过是可行的。
资料来源于:http://www.th7.cn/Program/Android/201408/263797.shtml
今天在看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就不会在开机时候启动两次了。
以上方法我测试过是可行的。
资料来源于:http://www.th7.cn/Program/Android/201408/263797.shtml
相关文章推荐
- Android应用设置为Launcher时onCreate启动俩次的问题
- Android应用Home键后Launcher重复启动问题
- Android APP设置为Launcher时onCreate启动两次
- Android应用Home键后Launcher重复启动问题
- 解决开发android应用时虚拟机启动、运行较慢的问题
- 关于android创建快捷方式会启动两个应用的问题(一)
- 关于android创建快捷方式会启动两个应用的问题
- 在Android隐藏launcher应用图标由其他应用启动
- 解决Activity启动黑屏及设置android:windowIsTranslucent不兼容activity切换动画问题
- Android 将自己的Launcher设置为默认启动
- Android应用点击HOME后,再次启动该应用,不显示最近Activity的问题解决。
- 关于android创建快捷方式会启动两个应用的问题
- android:在一个应用中创建其它应用的快捷启动方式Launcher
- 自己写的android Launcher没有出现在Launcher启动选择界面问题
- 解决Activity启动黑屏及设置android:windowIsTranslucent不兼容activity切换动画问题
- 解析android创建快捷方式会启动两个应用的问题
- android手机root后的安全问题 (四) 禁止开机启动和应用失效
- Android设置应用手机屏幕启动流程(一)