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

normal:常规的、通常的、一般的 。

static:静态的,不变的

onCreate( )方法是android应用程序中最常见的方法之一,那么,我们在使用onCreate()方法的时候应该注意哪些问题呢?

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里面耗时长的话可能导致极差的用户体验。

以下这段代码很多雷区:

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

this.requestWindowFeature(Window.FEATURE_NO_TITLE);

mContext = this;

setContentView(R.layout.main);

dataLoad = new DataLoading();

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,

new ContactsCallOptionHandlerFactory());

//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)所有的目的都是让你要启动的组件尽快上场,而不是以画好妆为主,这样的话客人会等不及的,顾客就是上帝。

参考文章:http://www.2cto.com/kf/201403/285613.html

[置顶] Android开发之MediaPlayerService服务详解(一)

前面一节我们分析了Binder通信相关的两个重要类:ProcessState 和 IPCThreadState.ProcessState负责打开Binder 驱动,每个进程只有一个.而 IPCThre ...

Android开发之EditText属性详解

1.EditText输入的文字为密码形式的设置 (1)通过.xml里设置: 把该EditText设为:android:password="true" // 以”.”形式显示文本 ( ...

【转】 Android开发之EditText属性详解

原文网址:http://blog.csdn.net/qq435757399/article/details/7947862 1.EditText输入的文字为密码形式的设置 (1)通过.xml里设置: ...

android开发之PreferenceScreen使用详解

是在惭愧,学习android也有一段时间了,今天才是第一次接触PreferenceScreen.记录下来,与大家分享. 本文参考:http://lovezhou.iteye.com/blog/1020 ...

Android开发之SoundPool使用详解

使用SoundPool播放音效 如果应用程序经常播放密集.急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了.因为MediaPlayer存在如下缺点: 1) 延时时间较长 ...

Android开发之MediaRecorder类详解

MediaRecorder类介绍: MediaRecorder类是Android sdk提供的一个专门用于音视频录制,一般利用手机麦克风采集音频,摄像头采集图片信息. MediaRecorder主要函 ...

android开发之Parcelable使用详解

想要在两个activity之间传递对象,那么这个对象必须序列化,android中序列化一个对象有两种方式,一种是实现Serializable接口,这个非常简单,只需要声明一下就可以了,不痛不痒.但是a ...

Android——onCreate( )方法详解(转)

android开发之onCreate( )方法详解 onCreate( )方法是android应用程序中最常见的方法之一,那么,我们在使用onCreate()方法的时候应该注意哪些问题呢? 先看看Go ...

Android源码下载方法详解

转自:http://www.cnblogs.com/anakin/archive/2011/12/20/2295276.html Android源码下载方法详解 相信很多下载过内核的人都对这个很熟悉 ...

随机推荐

VS2012 win7 修改TFS登陆账号

1.修改登陆账号: 在网上搜了好多,都没有找到解决方法,自己琢磨了一会找到了修改登陆TFS(Team Foundation Server)(团队资源管理器)的账号,和大家分享一下吧. 点击“开始”-- ...

C++基础——运算符重载友元函数示例

一.前言 其实本人学习C++的目的,只是为了体会OOP设计思想,并为利用System Verilog验证复杂设计做准备.如果想要真正做点软件方面项目级的东西,还需要掌握其他高级语言和库.框架等知识.因 ...

TCP/IP详解 卷一学习笔记(转载)

https://blog.csdn.net/cpcpcp123/article/details/51259498

自然语言处理(四)统计机器翻译SMT

1.统计机器翻译三要素 1.翻译模型 2.语言模型 3.排序模型 2.翻译流程 1.双语数据预处理 2.词对齐 3.构造短语翻译表 4.对短语翻译表进行概率估计 5.解码,beam search 6. ...

poj-3281(拆点+最大流)

题意:有n头牛,f种食物,d种饮料,每头牛有自己喜欢的食物和饮料,问你最多能够几头牛搭配好,每种食物或者饮料只能一头牛享用: 解题思路:把牛拆点,因为流过牛的流量是由限制的,只能为1,然后,食物和牛的 ...

springmvc+logback项目的日志搭建

一.重写HTMLLayout 两个自定义类:LzhHTMLLayoutBase和LzhHTMLLayout LzhHTMLLayoutBase代码如下: package top.liaozhengha ...

Android 获取高度宽度为0的时候的处理

转自http://my.oschina.net/xiahuawuyu/blog/167949 我们都知道在onCreate()里面获取控件的高度是0,这是为什么呢?我们来看一下示例: 首先我们自己写一 ...

golang内置数据类型作为函数参数

先上结论 golang的所有内置类型作为函数参数传递都是传值的方式(没有传递引用一说),需要注意的是:数组.slice和map作为函数参数时也是传值,但是如果对结构内元素进行的修改,修改的是原数据.如 ...

思考的乐趣----matrix67数学笔记:最精妙的无字证明

从一书中看到这个证明,据说在mathoverflow网站上这个无字证明获得了最多的投票! http://mathoverflow.net/qu ...

带你开始进入NPM的世界之NPM包的开发

个人开发包的目录结构 ├── coverage //istanbul测试覆盖率生成的文件 ├── index.js //入口文件 ├── introduce.md //说明文件 ├── lib │   ...

android中oncreate方法,android开发之onCreate( )方法详解相关推荐

  1. Android快速开发之appBase——(4).详解com.snicesoft.Application和BaseActivity

    转载请注明本文出自JFlex的博客http://blog.csdn.net/jflex/article/details/46441571,请尊重他人的辛勤劳动成果,谢谢! Android快速开发之ap ...

  2. android idata 模式,Android快速开发之appBase——(3).详解IHolder和IData

    Android快速开发之appBase--(3).详解IHolder和IData IHolder和IData是AVLib的两个组件,在前面已经使用过了,那么这一篇将会详细说明这两个组件的用法. IHo ...

  3. android启动页使用gif,android中使用react-native设置应用启动页过程详解

    一.背景 在我们使用react-native进行编写代码的时候,当启动应用的时候,我们会看到如下界面 然而,这样的启动界面是非常的不又好,那么我们该怎么进行处理启动界面呢?有如下两种方案 二.方案 1 ...

  4. android fragment加载布局的方式,Android中Fragment的加载方式与数据通信详解

    Android中Fragment的加载方式与数据通信详解 发布时间:2020-08-22 18:55:57 来源:脚本之家 阅读:155 作者:Joah 一.加载方式 1. 静态加载 1.1 加载步骤 ...

  5. iOS开发之Accounts框架详解

    2019独角兽企业重金招聘Python工程师标准>>> iOS开发之Accounts框架详解 Accounts框架是iOS原生提供的一套账户管理框架,其支持Facebook,新浪微博 ...

  6. android开发之Parcelable使用详解

    想要在两个activity之间传递对象,那么这个对象必须序列化,android中序列化一个对象有两种方式,一种是实现Serializable接口,这个非常简单,只需要声明一下就可以了,不痛不痒.但是a ...

  7. Android开发之EditText属性详解+++ImageView的属性

    Button的使用 不要阴影Button ---> TextView   (5.0新特性) <!-- 去按钮立体效果 --> <item name="android: ...

  8. Android 开发之EditText属性详解

    EditText & TextView 属性详解: android:layout_gravity="center_vertical" 设置控件显示的位置:默认top. an ...

  9. Android中的Searchview以及SearchableDictionary项目和plurals详解

    Android4.0之后,Android内置了一个搜索控件,配合ActionBar上面的搜索按钮,相当不错好看,这次使用了下,觉得很不错. 这个搜索的好处在于你点击后,他会自动弹出个搜索框,输入内容后 ...

  10. Android 中的context, service,active和intent使用详解

    在一个Android应用中,主要是由四种组件组成的,这四种组件分别是Context,Activity,Intent,Service. Content被译为上下文,是应用程序中心,应用程序所有功能可以通 ...

最新文章

  1. 通过案例练习掌握SSH 的整合
  2. 工业互联网平台发展与展望(附PPT)
  3. 有了这个IDEA插件,从此不用再开Postman了
  4. 非安装版mysql数据库启动不了_非安装版的mysql的启动和卸载
  5. tf.dtypes.cast
  6. 神策数据简宁:如何更好地借助数据驱动产品价值提升?
  7. VUE 项目作为服务启动
  8. 大数据培训:Zookeeper集群管理与选举
  9. leetcode 688. Knight Probability in Chessboard | 688. “马”在棋盘上的概率(dp,记忆化搜索)
  10. Qt 4.7.1 和 Mobility 1.1.0 已发布
  11. MySQL Batch 与 Transaction
  12. spring底层原理
  13. 恋爱必经阶段,过不来就分了
  14. comet学习(三)cometd心跳机制
  15. Android Button设置
  16. 使用 Swift 语言编程的优缺点
  17. github优秀项目分享 redis客户端
  18. 聊聊C++任务定时器的设计与具体实现
  19. 【量化课堂】海龟策略
  20. 从“老婆”到“俞渝”,李国庆5377条微博透露出了多少秘密?

热门文章

  1. Visual Paradigm社区版安装教程
  2. 华为服务器显示红色的心跳,服务器的心跳线
  3. 一文读懂遗传算法工作原理(附Python实现)
  4. JAVA基础(完结版)
  5. 安装k8s时,报CA证书加载失败的错误
  6. 计算机开机出现ROM,电脑无法开机并显示EXITING INTEL PXE ROM如何解决
  7. MATLAB GUIDE 面板(panel)上的控件消失问题和不靠谱的解决方案
  8. sshd: no hostkeys available — exiting
  9. 2021 年 11 月信息系统项目管理师考前案例分析学习资料---马军老师编著
  10. 电动汽车充电站选址定容软件简单实现