摘要:

Android程序的Activity的onCreate()重复执行,导致界面多次加载,影响用户体验。

问题描述:

1、程序运行在平板上(有底座,如图1-1 底座有串口、USB口、电源口、以太网口),Activity正常显示界面。当平板放在底座时,网络是以太网(有线网络),当平板脱离底座时,网络是无线网,该过程有网络切换;

2、当把平板从底座拿起时,程序crash.

图1-1

问题分析:

1、程序在网络切换的过程中可能未捕获网络状态的变化,程序bug导致;

2、平板和底座接触时,可能有硬件方面的触发,而程序未捕获该变化,程序bug所致;

3、onCreate()方法重复执行了一次,可能是Configuration中数据发生改变,导致Activity生命周期发生改变而调用。

问题解决:

1、检查检测网络切换部分代码,正常;

2、在Android清单文件中添加 android:configChanges属性,把所有属性值赋上;

3、在Acitivity中重写onConfigurationChanged方法,将放在底座和脱离底座时的Configuration打印出来对比,有差异的就是变化的,如下是本人测试数据:

1)放在底座时,在activity的onCreate方法中获得的Configuration

{1.0 ?mcc?mnc zh_CN ldltr sw800dp w1280dp h727dp 160dpi xlrg landdesk finger -keyb/v/h -nav/h s.515}

2)从底座时拿起平板时,在activity的onConfigurationChanged方法中获得的Configuration
{1.0 ?mcc?mnc zh_CN ldltr sw800dp w1280dp h727dp 160dpi xlrg land finger -keyb/v/h -nav/h s.518}

3)放到底座时,在activity的onConfigurationChanged方法中获得的Configuration
{1.0 ?mcc?mnc zh_CN ldltr sw800dp w1280dp h727dp 160dpi xlrg land desk finger -keyb/v/h -nav/h s.523}

分析以上数据可知,desk是区别所在。desk隶属于configChanges中的uiMode(用户接口模式),如下修改:

android:configChanges="uiMode"

uiMode:

The user interface mode has changed — this can be caused when the user places the device into a desk/car dock or when the night mode changes. See UiModeManager. Added in API level 8.
用户接口发生改变——这可能发生在用户把它的设备插入底座(dock)或者切换到了夜间模式。查看 API level8 计入的 UiModeManager.

参考:

1、Activity属性官方详解

2、onConfigurationChanged的作用

Android Activity onCreate()方法重复执行相关推荐

  1. Android 在onCreate()方法中获取控件宽高值为0解决方案

    大家很多时候需要在Activity或者Fragment的onCreate()方法中获取声明的空间的高度或者宽度,进行位置移动或者其他操作,但是当调用 view.getHeight() 或者 view. ...

  2. android中oncreate方法,android开发之onCreate( )方法详解

    这里我们只关注一句话:This is where you should do all of your normal static set up.其中我们只关注normal static, normal ...

  3. android中oncreate方法,Android解决在onCreate()中获取View的width、Height为0的方法

    前言 在activity中,经常需要获取view的width和height,但是在onCreate()获取view的width和height会得到0.view.getWidth()和view.getH ...

  4. android中oncreate方法,Android textView 中 onCreate 方法的改变

    我在main.xml上使用 Layout Editor创建了一个textview名称是textView1. 我想使用一个自定义的字体,所以我在onCreate方法中创建了下面的代码,但是好像不能识别t ...

  5. android Activity runOnUiThread() 方法使用

    在android 中我们一般用 Handler 做主线程 和 子线程 之间的通信 . 现在有了一种更为简洁的写法,就是 Activity 里面的 runOnUiThread( Runnable )方法 ...

  6. Android 重写onBackPressed()方法 不执行问题

    @Override public void onBackPressed() { // TODO Auto-generated method stub super.onBackPressed(); To ...

  7. android Activity runOnUiThread() 方法的使用

    利用Activity.runOnUiThread(Runnable)把更新ui的代码创建在Runnable中,然后在需要更新ui时,把这个Runnable对象传给Activity.runOnUiThr ...

  8. Activity的onCreate方法

    @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setC ...

  9. Android Activity 滑动返回。支持微信滑动返回样式、横屏滑动返回、全屏滑动返回

    BGASwipeBackLayout-Android 项目地址:bingoogolapple/BGASwipeBackLayout-Android  简介:Android Activity 滑动返回. ...

最新文章

  1. linux删除指定创建时间文件(文件夹)脚本
  2. 使用git将本地项目工程推送到码云上
  3. LINUX网络状态工具SS命令使用详解
  4. Java 判断3位数
  5. Nginx配置实例-反向代理实现浏览器请求Nginx跳转到服务器某页面
  6. android 获取应用的资源id和uri
  7. HIVE 一行转多行输出办法
  8. 关于Ribbon的几个问题
  9. ASP.NET2.0应用中定制安全凭证之理论篇
  10. opensource项目_最佳Opensource.com:业务
  11. 从0到1 | 滴滴DB自动化运维实践了解一下
  12. Windows中NTP服务器的搭建和时间同步
  13. Android8.1 swap空间不够编译失败:ckati failed with: signal: interrupt
  14. 开源点云数据处理 开源_使用开源软件教授大数据处理
  15. maya多边形建模怎样做曲面_maya中的曲面模型怎么转换成多边形?
  16. IE 0day,2010传说中的攻击Google等公司的代码
  17. 下面哪些不是java的原始数据类型_以下哪个不是Java的原始数据类型()A? – 手机爱问...
  18. html使用 katex 数学公式
  19. 第11章 菜单及其它资源
  20. Maven警告:Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is...

热门文章

  1. 参加第13届全国男性健康日活动有感
  2. Degenerate dimensions (退化的维)
  3. error Component name “xxx“ should always be multi-word vue/multi-word-comp
  4. 经济基础知识(初级)【7】
  5. 2021年全国职业院校技能大赛(中职组)网络安全竞赛试题(2)详解
  6. List正确删除元素方法
  7. 数据挖掘分析相关面试题(亲身经历),持续更新中(最新一次为20210209)
  8. 异步通信先,有效数据速率计算
  9. 整理一些计算机基础知识! 1
  10. 桌面图标变白色解决办法