iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android onCreate( )方法详细介绍
  • 791
分享到

Android onCreate( )方法详细介绍

方法Android 2022-06-06 07:06:20 791人浏览 泡泡鱼
摘要

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

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

    先看看Google Android Developers官网上的解释:

    onCreate(Bundle) is where you initialize your activity. Most importantly, here you will usually call setContentView(int) with a layout resource defining your UI, and using findViewById(int) to retrieve the widgets in that UI that you need to interact with programmatically.         

   Called when the activity is starting. This is where most initialization should go: calling setContentView(int) to inflate the activity‘s UI, using findViewById(int) to programmatically interact with widgets in the UI, calling managedQuery(android.net.Uri, String[], String, String[], String) to retrieve cursors for data being displayed, etc.

   You can call finish() from within this function, in which case onDestroy() will be immediately called without any of the rest of the activity lifecycle (onStart(),onResume(), onPause(), etc) executing.

   Derived classes must call through to the super class‘s implementation of this method. If they do not, an exception will be thrown.

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

以上就是对Android OnCreate()方法的详细介绍,后续继续补充相关知识,谢谢大家对本站的支持!

您可能感兴趣的文章:Android onCreateOptionsMenu的使用方法总结Android编程实现两个Activity相互切换而不使用onCreate()的方法Android OnCreate()中获取控件高度与宽度两种方法详解Android使用onCreateOptionsMenu()创建菜单Menu的方法详解Android 解决嵌套Fragment无法接收onCreateOptionsMenu事件的问题Android在OnCreate中获取控件的宽度和高度的实现代码Android中oncreate中获得控件高度或宽度的实现方法


--结束END--

本文标题: Android onCreate( )方法详细介绍

本文链接: https://www.lsjlt.com/news/24021.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mysql优化方法详细介绍
    目录1、字段属性2、字段NOT NULL3、JOIN代替子查询4、UNION代替手动创建临时表5、事务6、索引下面聊聊mysql常见的优化方法。 1、字段属性 mysql是一...
    99+
    2023-02-03
    Mysql优化 Mysql优化方法
  • fastjson 使用方法详细介绍
    Fastjson介绍Fastjson是一个Java语言编写的JSON处理器。遵循http://json.org标准,为其官方网站收录的参考实现之一。功能qiang打,支持JDK的各种类型,包括基本的JavaBean、Collection、M...
    99+
    2023-05-30
    fastjson 使用
  • $.ajax()方法参数的详细介绍
    本篇内容主要讲解“$.ajax()方法参数的详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“$.ajax()方法参数的详细介绍”吧!会灵活的运用ajax的...
    99+
    2024-04-02
  • React Immutable使用方法详细介绍
    目录1. 介绍2. 优缺点3. 对象处理4. 数组处理5. 优化组件渲染6. immutable和redux集合使用1. 介绍 假设当前 redux 的大小为 1G,现在要修改 re...
    99+
    2024-04-02
  • NodeJs操作MYSQL方法详细介绍
    目录在项目中操作数据库的步骤安装与配置 mysql 模块1. 安装 mysql 模块2. 配置 mysql 模块3. 测试 mysql 模块能否正常工作使用 mysql 模块操作 M...
    99+
    2024-04-02
  • 详细介绍Github的使用方法
    随着互联网技术的不断发展,越来越多的开发者开始加入到开源项目中,Github作为目前全球最大的代码托管平台之一,也成为了开发者们分享、学习、合作的重要工具之一。然而,如何使用Github来进行代码管理、版本控制、协作开发等,还是很多新手开发...
    99+
    2023-10-22
  • Androidwebview加载H5方法详细介绍
    目录1,安卓APP 怎么用webview加载H52,H5怎么调用安卓定义的方法3,安卓怎么调用H5定义的方法这篇文章主要阐述3个知识点 安卓APP 怎么用webview加载H5H5怎...
    99+
    2024-04-02
  • Kotlin扩展方法超详细介绍
    目录前言一、扩展方法1.扩展方法的原型2.扩展方法的使用二、Kotlin扩展方法实现原理三、泛型扩展方法四、扩展属性五、为伴生对象添加扩展六、Kotlin 中常用的扩展七、案例前言 ...
    99+
    2024-04-02
  • Vuex详细介绍和使用方法
    目录一、什么是Vuex二、运行机制三、创建项目1、使用脚手架搭建Vue项目2、安装Vuex3、启动项目4、配置使用Vuex4.1、创建store文件夹4.2、配置全局使用store对...
    99+
    2024-04-02
  • Maven使用方法详及方式详细介绍
    目录Maven简介1、软件开发中的阶段2、Maven能做什么3、没有使用maven怎么管理依赖4、什么是maven约定目录结构maven的使用方式POM文件坐标的概念依赖 depen...
    99+
    2022-11-13
    Maven使用方法 Maven方法 Maven使用方式
  • JavaInheritableThreadLocal用法详细介绍
    目录简介问题复现解决方案源码分析注意简介 本文介绍InheritableThreadLocal的用法。 ThreadLocal可以将数据绑定当前线程,如果希望当前线程的ThreadL...
    99+
    2024-04-02
  • Android组件化原理详细介绍
    目录什么是组件化?为什么使用组件化?一步步搭建组件化1.新建模块2.统一Gradle版本号3.创建基础库4.组件模式和集成模式转换5.AndroidManifest的切换6.*业务A...
    99+
    2024-04-02
  • Vue路由配置方法详细介绍
    目录手动配置Vue-router环境组件内部跳转路由与传参useRouter,useRoute手动配置Vue-router环境 1、下载包: npm i vue-router --s...
    99+
    2024-04-02
  • Javascript数组的 forEach 方法详细介绍
    目录前言使用forEach注意事项前言 在JavaScript 中数组的遍历 有很多中方法, 其中有一种 使用 foreach 来遍历数组。 mdn官方文档 语法: arr.forE...
    99+
    2024-04-02
  • 详细介绍golang中.()的使用方法
    Golang是一门非常流行的编程语言,在很多领域都有着广泛的应用。在开发过程中,很多时候我们需要将函数作为参数传递给其他函数,这时候就需要用到golang中的.()用法。本文将详细介绍golang中.()的使用方法。什么是.()用法?在go...
    99+
    2023-05-14
  • SpringCloud Gateway DispatcherHandler调用方法详细介绍
    目录前言DispatcherHandler类声明handle方法最后总结一下前言 之前几节我们分析了请求是如何调用到HttpWebHandlerAdapter的,然后再调用到Disp...
    99+
    2022-11-13
    SpringCloud Gateway DispatcherHandler SpringCloud DispatcherHandler
  • Javascript数组的 splice 方法详细介绍
    目录前言牛刀小试删除元素添加元素 并且替换元素example1example2example3example4添加元素example1example2负数索引支持总结前言 splic...
    99+
    2024-04-02
  • Mysql表的操作方法详细介绍
    目录创建表查看表结构修改表删除表创建表 语法: CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 ...
    99+
    2024-04-02
  • Python torch.onnx.export用法详细介绍
    目录函数原型参数介绍mode (torch.nn.Module, torch.jit.ScriptModule or torch.jit.ScriptFunction)args (t...
    99+
    2024-04-02
  • springMVC详细介绍
    目录springMVC简介SpringMVC框架的优点第一个SpringMVC程序第一步:创建maven-web项目第二步:在pom.xml中添加依赖和插件第三步注册中央调度器第四步...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作