标签:

1.onCreate( )方法是android应用程序中最常见的方法之一:

翻译过来就是说,onCreate()函数是在activity初始化的时候调用的,通常情况下,我们需要在onCreate()中调用setContentView(int)函数填充屏幕的UI,一般通过findViewById(int)返回xml中定义的视图或组件的ID。子类在重写onCreate()方法的时候必须调用父类的onCreate()方法,即super.onCreate(),否则会抛出异常。

但是,我们必须要注意的是,在onCreate()函数里我们需要配置一些必要的信息,但是并不是所有的事情都能在这里做。我们知道,一个activity启动调用的第一个函数就是onCreate,它主要做这个activity启动时一些必要的初始化工作,这个函数调用完后,这个activity并不是说就已经启动了,或者是跳到前台了。而是还需要其他的大量工作,我们知道:onCreate之后还有onRestart()和onStart()等,实际上onStart()调用完毕了这个activity还没有完全启动,也只是前台可见,直到 onResume() 调用后这个onCreate才算终于启动。既然这样,那么在一个activity真正启动之前任何相当耗时的动作都会导致activity启动缓慢,特别是在onCreate里面耗时长的话可能导致极差的用户体验。

2.代码示例:

protected voidonCreate(Bundle savedInstanceState) {//TODO Auto-generated method stub

super.onCreate(savedInstanceState);this.requestWindowFeature(Window.FEATURE_NO_TITLE);

mContext= this;

setContentView(R.layout.main);

dataLoad= newDataLoading();

mScrollLayout=(ScrollLayout)findViewById(R.id.ScrollLayoutTest);

btnExit=(ImageButton)findViewById(R.id.btn_exit);

btnExit.setOnClickListener(btnExitClickListener);

btnContacts=(ImageButton)findViewById(R.id.btn_contacts);

btnContacts.setOnClickListener(btnContactsClickListener);

mSpeedDailDataMgr= new SpeedDailMgr(this);

loadGripView();//in MTK//mCallOptionHandler = new CallOptionHandler(this);

mCallOptionHandler = new ContactsCallOptionHandler(this,newContactsCallOptionHandlerFactory());//don‘t consider getting no data, ex: when starting up

updateEnabledCard();

}

这是一个APP的一个Activity的onCreate的写法。其实这段代码没有什么问题,而且看起来也是比较简单的代码。不过里面大量危险的代码段:不管是dataLoad = new DataLoading(); 还是 mSpeedDailDataMgr = new SpeedDailMgr(this);更或者是loadGripView();甚至updateEnabledCard();这么危险的处理都是不应该在这里来处理的。这里包含了加载数据库数据、读取文件信息、读取SIM卡信息,这些操作都是有可能抛出异常的,而且其操作耗时也是不确定的!对于面对这样问题,我觉得应该注意下面几个方面:

(1)在Activity启动前,尽量少做。

(2)对于布局比较复杂的时候,可以考虑不要一次性全部加载上,动态加载是一个好的办法。

(3)对于及时需要的数据,加载起来耗时的又有异常危险的,一定记得开辟一个线程来做这些动作,千万记得不要做阻塞主线程(UI线程)的任何事情。

(4)对于特殊情况下,Activity启动确实需要大量工作时候,可以考虑先加载一个简单的布局(或是Activity)来过渡。

(5)所有的目的都是让你要启动的组件尽快上场,而不是以画好妆为主,这样的话客人会等不及的,顾客就是上帝。

标签:

java oncreate_Android(java)学习笔记169:Activity中的onCreate()方法分析相关推荐

  1. 解析Activity中的onCreate方法

    我们在写一个自己的Activity的时候需要注意: 1.都必须extends Activity(或者其子类): 2.必须在方法onCreate中存在一条这样的语句:super.onCreate(也就是 ...

  2. 学习笔记:MultipartFile中的transferTo方法

    学习笔记:MultipartFile中的transferTo(dest) 在文件上传的时候,MultipartFile中的transferTo(dest)方法只能使用一次; 并且使用transferT ...

  3. 【学习笔记】OFDM中信道估计技术分析与实现

    目录 一.信道估计概念 二.信道估计作用 三.相干检测与非相干检测 (一)非相干检测 (二)相干检测 (三)注意 四.影响信道估计算法性能的重要因素 五.信道估计方法的划分 (一)根据处理域的不同, ...

  4. 学习笔记之三(数组中的一些方法)

    这是我在自学过程中看到的一些方法,如果对你有帮助,万分荣幸 <!DOCTYPE html> <html><head><meta charset="U ...

  5. linux中的echo%3e文件,Linux学习笔记-shell脚本中${}的使用方法

    ${} 除了做${var}变量替换,还有什么功能呢? # 举例说明 [[email protected] ~]$ file=/dir1/dir2/dir3/my.file.txt # 变量替换 [[e ...

  6. 【TTool学习笔记】1:AVATAR建模方法(分析相关)

    在TTool设计面板上右键,有选择New xxx Methodology,其中包括: DIPLODOCUS,用来做嵌入式系统的划分 AVATAR,用来设计嵌入式软件 SysML-Sec,用来设计安全的 ...

  7. java/android 设计模式学习笔记(3)---工厂方法模式

    这篇来介绍一下工厂方法模式(Factory Method Pattern),在实际开发过程中我们都习惯于直接使用 new 关键字用来创建一个对象,可是有时候对象的创造需要一系列的步骤:你可能需要计算或 ...

  8. android oncreate调用,Android app启动activity并调用onCreate()方法时都默默地干了什么?...

    在AndroidManifest.xml文件中的元素中有这么两句: 当写好的应用发布到手机上之后,当双击"APP"应用的图标时,系统会将这个点击时间包装成一个Intent,该Int ...

  9. Java快速入门学习笔记9 | Java语言中的方法

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  10. Java快速入门学习笔记8 | Java语言中的数组

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

最新文章

  1. 隐私数据在隐私AI框架中的安全流动
  2. 创业做什么好?先学习精英式创业从平庸到卓越
  3. 百度安全 TrustZone SDK 正式成为 OP-TEE 官方推荐 Rust 开发环境
  4. Vue源码之 Vue的生命周期
  5. python获取的html转换为json,python读取XML格式文件并转为json格式
  6. docker部署express项目
  7. 技术水平低,就这还敢写自动化项目实战经验丰富?
  8. VMware 中的操作系统切换模式后总是连接不上互联网可能的问题之一
  9. 案例式c语言实验答案,C语言课后实验设计答案
  10. log4j 日志书写格式_Log4J日志配置详解
  11. linux脚本while死循环,shell编程之while死循环
  12. 时间序列的特征工程——针对Hurst指数的Python计算
  13. 【C认证】对标名企技术标准,大厂不是梦
  14. Matlab sym syms
  15. 写作分册王诚pdf_后王诚时代|老铁们,管综写作还能跟谁?
  16. 关于日历点击跳转以及短信点击跳转到指定联系人界面的一些记录
  17. 28.文件目录解析代码实现
  18. 学习Java软件编程哪个机构好
  19. JavaScript------常用JS方法(utils.js)骨灰级总结
  20. 日志显示格式%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n

热门文章

  1. figma设计_我如何使用Figma设计等轴测3D中的著名建筑
  2. TheBrain 9基础教程:界面功能篇(3)Thought的创建和设置
  3. 《赢在中国》经典语录
  4. 使用poi将word转换为html
  5. java数组为空如何判断_如何判断数组是否为空?
  6. java接口安全性解决方式
  7. Redis原理--为什么性能高,速度快?
  8. Java读取文件的内容到String字符串中
  9. 碧蓝航线维护服务器时间,碧蓝航线异色格维护公告 异色格活动结束时间介绍...
  10. Chrome浏览器HTTP网站显示“不安全”问题