这两天测试app时,发现一个奇怪问题,app在启动后,Activity会onCreate两次,起初以为是横屏设置导致,随即在Activity中添加了android:configChanges="orientation|screenSize|keyboardHidden",经测试问题还是未解决。最后反复观察,发现设备在用wifi(不插入sim卡)时,并不存在该问题。所以怀疑是sim或移动上网产生的问题。仔细看了看configChanges能够设置的选项,发现有很多:

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

  http://developer.android.com/guide/topics/manifest/activity-element.html

  其中,当mcc和 mnc从sim卡中读取到时,也会导致onCreate重复执行。所以修改android:configChanges="mcc|mnc|orientation|screenSize|keyboardHidden"即可,测试后恢复正常。

  其实我这里app需求比较特殊,公司自有的设备,自定义的launcher,开机即启动指定的app,所以应该是在设备未检测到sim相关信息前就启动,当app启动后,sim又被检测到,所以导致app再次执行Activity的onCreate。

参考资源

http://blog.csdn.net/js931178805/article/details/7666463

http://zh.wikipedia.org/wiki/移动设备网络代码

http://www.quwenba.com/question/info/id/69

http://mobile.pconline.com.cn/339/3395040.html

http://blog.csdn.net/android_xiaoqi/article/details/7771177

http://blog.csdn.net/coding_or_coded/article/details/6889870

http://bbs.csdn.net/topics/390413976

http://www.cnblogs.com/wisekingokok/archive/2011/10/06/2199948.html

04-16 11:48
查看更多