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

 
在AndroidManifest.xml文件中的<intent-filter>元素中有这么两句:

<intent-filter>
     <action android:name="android.intent.action.MAIN"/>
     <category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>

当写好的应用发布到手机上之后,当双击”APP“应用的图标时,系统会将这个点击时间包装成一个Intent,该Intent包含两个参数,如上所述的两个参数

被传递给应用之后,在应用的功能清单文件中寻找与该意图匹配的意图过滤器,如果匹配成功,找到相匹配的意图过滤器所在的Activity元素,再根据
<activity>元素的”name“属性来寻找其对应的Activity类。接着, Android操作系统创建该Activity类的实例对象,对象创建完成之后,会执行到该类的onCreate方法
此onCreate方法是重写父类Activity的onCreate方法而实现的。onCreate方法用来初始化Activity实例对象。如下是helloWorld.java类中的onCreate方法的代码:

public void onCreate (Bundle savedInstanceState)
{
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
}

其中super.onCreate(savedInstanceState)的作用是调用其父类Activity的onCreate方法来实现对界面的图画绘制工作。
在实现自己定义的Activity子类的onCreate方法时一定要记得调用该方法,以确保能够绘制界面。

super.onCreate主要是加载一些组件。
第一件事情便是super.onCreate(savedInstanceState),其实这条语句放在子类中的onCreate方法中的任何位置都可,问题只是
super.onCreate(savedInstanceState)必须要被执行,所以,最好也就是放在第一行,看起来比较明确。

在TargetActivity中重写了onCreate方法,而在Activity中的onCreate方法中已经对一些基本的基础进行了操作,如果子类没有super.onCraete方法的调用,会导致子类中的onCreate方法功能不全,从而出现错误。

在activity的生命周期中,只要离开了可见阶段,或者说失去了焦点,activity就很可能被进程终止了!,被KILL掉了,,这时候,就需要有种机制,能保存当时的状态,这就是savedInstanceState的作用。 
当一个Activity在PAUSE时,被kill之前,它可以调用
onSaveInstanceState()来保存当前activity的状态信息(在paused状态时,要被KILLED的时候)。用来保存状态信息的Bundle会同时传给两个method,即onRestoreInstanceState() and onCreate().

setContentView(R.layout.main)的作用是加载一个界面。该方法中传入的参数是”R.layout.main“,其含义为R.java类中静态内部类layout的静态常量main的值,
而改值是一个指向res目录下的layout子目录下的main.xml文件的标识符。因此代表着显示main.xml所定义的画面。

参考文档
http://www.android100.org/html/201406/10/23627.html

http://wenku.baidu.com/link?url=uXM2Tc7WljK5aiHTT9EqxK3XFlKByzBxdIjG1fcSw5blZJeRmAu5-gvHOWD8msSwKOWuD8OHhJ6iKlAUfULfQ18Od-UsabnHIaKy2ImCsy_

Android app启动activity并调用onCreate()方法时都默默地干了什么?的更多相关文章

  1. 如何找到Android app启动activity和页面元素信息

    在实施app自动化的时候,我们需要知道app 的启动activity和页面元素信息,以此启动app和定位页面元素,那么如何在没有源码的情况下找打他们呢?当然是有好的工具啦,有Android sdk自带 ...

  2. Android App 启动 Activity 创建解析

    继承实现类关系: ActivityThread  thread = new ActivityThread(); Context->ContextImpl   ContextImpl contex ...

  3. android activity在横竖屏切换的时候不重新调用onCreate方法

    在安卓系统中,横竖屏切换会默认重新调用onCreate等生命周期方法,如果此时有一些临时数据没有保存下来,很有可能会导致该数据丢失. 因此我们可以进行以下设置,来避免恒切换时重新调用onCreate方 ...

  4. Android开机启动Activity或者Service方法(转载)

    这段时间在做Android的基础开发,现在有一需求是开机启动,按照网上某些博文教程做了下,始终不成功,一开机总是提示所启动的应用程序意外终止,于是参考了Android SDK doc,终于解决问题,下 ...

  5. Android开机启动Activity或者Service方法

    本文出自 “Bill_Hoo专栏” 博客,请务必保留此出处http://billhoo.blog.51cto.com/2337751/761230 这段时间在做Android的基础开发,现在有一需求是 ...

  6. Android onConfigurationChanged用法(规避横竖屏切换导致的重新调用onCreate方法)

    onConfigurationChanged的目的是为了规避横竖屏切换干掉activity而重新调用onCreate方法的问题:有的时候,我们希望重新进入OnCreate生命周期,此时可以调用onSa ...

  7. Android App 启动页(Splash)黑/白闪屏现象产生原因与解决办法(转)

    转载: Android App 启动页(Splash)黑/白闪屏现象产生原因与解决办法   首先感谢博主分享,本文作为学习记录 惊鸿一瞥 微信的启动页,相信大家都不陌生. 不知道大家有没有发现一个现象 ...

  8. Android Service 通知Activity更新界面的方法研究

    Android Service 通知Activity更新界面的方法研究   Android的最重要的组件式service和activity,那么在使用的过程中,我们最常遇到的问题是他们之间的通信问题. ...

  9. [FMX] Android APP 启动黑屏优化补丁

    使用说明 *************************************************** Android APP 启动黑屏优化补丁 作者: Swish, YangYxd 201 ...

随机推荐

  1. HttpLuaModule——翻译(一)

    最近经常使用春哥和小哲老师写的NGINX-LUA,非常苦于没有中文文档,特别是向我这种英文水平实在有限的同学,所以将遇到的模块记录下来,供以后参考!原文:http://wiki.nginx.org/H ...

  2. everything排除指定目录和文件

  3. Searching for equivalent of FileNotFoundError in Python 2

    I created a class named Options. It works fine but not not with Python 2. And I want it to work on b ...

  4. ubuntu1604安装tensorflow

    操作系统 :ubuntu-16.04.2-desktop-amd64tensorflow版本: 1.0.0python版本 : 2.7.12 开启ssh : sudo apt install open ...

  5. PgSql备份pg_dump与还原手记pg_restore

    真没有想到,以前一直是PostgreSQL使用者,突然需要库移植又成了头一招了!原来它与mysql命令行操作区别还挺大.不用怕,但绝对要细心,因为数据库操作是网站的核心,一旦出现损坏或丢失,后果就非常 ...

  6. Oracle 中包(Package)

    一.什么要使用包?        在一个大型项目中,可能有很多模块,而每个模块又有自己的过程.函数等.而这些过程.函数默认是放在一起的(如在PL/SQL中,过程默认都是放在一起 的,即Procedur ...

  7. 用OpenSSL把二进制的Cer证书转换程Base64格式的PEM格式的证书

    openssl x509 -inform der -in /d/ty.cer -pubkey -noout > /d/certificate_publickey.pem

  8. 分布式锁和Redisson实现

    http://thoreauz.com/2017/08/20/language/java/%E5%9F%BA%E7%A1%80/%E5%88%86%E5%B8%83%E5%BC%8F%E9%94%81 ...

  9. django之创建第7-2个项目-url配置分离

    1.urls.PY分离 # -*- coding: UTF-8 -*- from django.conf.urls import patterns, include, url # Uncomment ...

  10. GDALBuildVRT异构波段的支持

    目录 简述 修改源码 1.修改DatasetProperty结构体 2.修改VRTBuilder::AnalyseRaster函数 3.修改VRTBuilder::CreateVRTNonSepara ...