关于onConfigurationChanged
这两天测试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 - 英文原文为Mobile Country Code,中文意思是移动国家号码,由3位数字组成,唯一地识别移动用户所属的国家。我国为460。
mnc - 英文原文为Mobile Network Code,中文意思是移动网号。它是一组十进制码,用以唯一地表示某个国家(由MCC确定)内的某一个特定的GSMPLMN网。移动网号(MNC)由二个十进制数组成,编码范围为十进制的00-99。若一个国家中有多于一个的GSM公司陆地移动网(PLMN),则每个网必须具有不同的MNC。
imsi - international mobile subscriber identity 国际上为唯一识别一个移动用户所分配的号码。其由mcc(3位) + mnc(2位) + msin(10位)组成,共15位。
当手机开机后,会从sim卡中读取imsi,并发给网络判断其有效性。有了解如何解锁at&t合约机的应该很清楚这些东西。
其中,当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
关于onConfigurationChanged的更多相关文章
- Android 中onConfigurationChanged问题
onConfigurationChanged 不生效问题解决方案: 1).首先,需要重写onConfigurationChanged函数 @Override public void onConf ...
- android 连接蓝牙扫码枪,程序崩溃之onConfigurationChanged
当android手机通过蓝牙连接扫码枪时,程序崩溃的原因之一是:键盘弹出或隐藏,触发程序走了onDestory->onCreate的生命周期,从而可能使得页面的某些初始化数据被清除了. 解决方法 ...
- android onConfigurationChanged讲解
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 相信大家对这个属性已经耳熟能详,如果大家受过转屏的折磨的话! 老规矩,先讲讲官方文档是怎么说的.为什 ...
- onConfigurationChanged is not called&& 翻转屏幕不执行onConfigurationChanged方法&&onConfigurationChanged不执行
我总结出一句话: 如果target sdk>=13,必须使用如下方式声明activity:android:configChanges="orientation|screenSize&q ...
- onConfigurationChanged与OnCreate,究竟谁被调用的问题
在以前的版本中只要在AndroidManifest.xml文件中对activity指定android:configChanges="keyboardHidden|orientation&qu ...
- Android onConfigurationChanged(Configuration cfg) 无法触发问题
1.android:configChanges="orientation|keyboardHidden"的使用 当在activity加上android:configChange ...
- 转:onConfigurationChanged的作用
API原文说明:android:configChangesLists configuration changes that the activity will handle itself. When ...
- Android onConfigurationChanged的作用
API原文说明: android:configChangesLists configuration changes that the activity will handle itself. When ...
- 响应的系统设置的事件——重写onConfigurationChanged响应系统设置更改
如果程序需要监听系统设置的更改,则可以考虑重写Activity的onConfigurationChanged(Configuration newConfig)方法,该方法是一个基于回调的事件处理方法: ...
- onConfigurationChanged方法的使用
在日常生活中,手机会有很多种配置放生改变的情况,当然,有些时候需要监听他们并对他们进行处理,这就涉及到了onConfiguration方法的使用,我大致说一下,这个方法需要发生在屏幕切换横竖屏,或者选 ...
随机推荐
- sourcetree git合并问题
在使用sourcetree做多功能合并(合并不提交)的时候,有时按钮是灰色的,直接点击右上角命令行模式 git merge <branch1> --no-commit 转载请注明博客出处: ...
- 浅析Web数据存储-Cookie、UserData、SessionStorage、WebSqlDatabase
Cookie 它是标准的客户端浏览器状态保存方式,可能在浏览器诞生不久就有Cookie了,为什么需要Cookie 这个东东?由于HTTP协议没有状态,所以需要一个标志/存储来记录客户浏览器当前的状态, ...
- contextmap相当于session之类的 用于设置属性 投放到页面上 contextmap的数据存储在map中
contextmap相当于session之类的 用于设置属性 投放到页面上
- 01 Spring Boot 的简单配置和使用
Spring Boot 简介 使用 Spring Boot 可以让我们快速创建一个基于 Spring 的项目,而让这个 Spring 项目跑起来我们只需要很少的配置就可以了. 创建 Spring Bo ...
- c++11 语言级线程
c++11 语言级线程 线程的创建 用std::thread创建线程非常简单,只需要提供线程函数或函数对象即可,并且可以同时指定线程函数的参数. #define _CRT_SECURE_NO_WARN ...
- 【BZOJ1072】排列(搜索)
[BZOJ1072]排列(搜索) 题面 BZOJ 洛谷 题解 算下复杂度,如果用\(next\_permutation\) 那就是\(10!\times 10\times 15\),复杂度不太对 那好 ...
- Timus 1005 解题报告
题目链接 http://acm.timus.ru/problem.aspx?space=1&num=1005 题目大意 给你一堆石头,现在需要你将这堆石头分成两堆,要求两堆石头的重量相差最小, ...
- wget递归下载整站
由于线上跑的系统还有CentOS5.4.6.4.6.5.6.5.6.6.6.8,而各镜像站维护的最早的版本已经是6.9,所以需要爬archive站点的rpm包来自建yum仓库. # wget -r - ...
- NSLineBreakByWordWrapping和NSLineBreakByCharWrapping
在iOS开发过程中,在文本的lineBreakMode中有以下几个功能: NSLineBreakByWordWrapping = 0 //以空格为界,保留整个单词. NSLineBreakByChar ...
- Go_19: Golang 中错误与异常需要重新认识
如何进行错误处理,这是一个Go程序员之间,特别是一些新的Go程序员,会经常讨论的问题.讨论到最后往往由于以下代码的多次出现而变成了抱怨. if err != nil { return err } 我们 ...