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

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

当写好的应用发布到手机上之后,当双击”抽屉“里该应用的图标时,系统会将这个点击事件包装成一个Intent,该Intent包含两个参数,如上所述的两个参数action, category
被传递给应用之后,在应用的功能清单文件中寻找与该意图匹配的意图过滤器,如果匹配成功,找到相匹配的意图过滤器所在的Activity元素,再根据
activity 元素的”name“属性来寻找其对应的Activity类。接着Android操作系统创建该Activity类的实例对象,对象创建完成之后,会执行到该类的onCreate方法,
此onCreate方法是重写父类Activity的onCreate方法而实现的。onCreate方法用来初始化Activity实例对象。如下是AndroidUIdemo.java类中的onCreate方法的代码:

  @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.caculator_layout);Log.d(TAG,"debug");Log.i(TAG,"info");Log.w(TAG,"warm");Log.e(TAG,"error");Log.v(TAG,"verbose");//找控件initView();//设置点击事件initClickEvent();}

一、 super.onCreate(savedInstanceState)

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

super.onCreate主要是加载一些组件。

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

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

savedInstanceState

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

二、setContentView(R.layout.caculator_layout)

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

三、两种点击事件

 /**设置点击事件*/private void initClickEvent(){//第一种设置方式mCancel.setOnClickListener(new View.OnClickListener() {public void onClick(View v){Log.d(TAG, "content=="+((TextView)v).getText() );}});//第二种设置方式mPlusOrMinus.setOnClickListener(this);mPlus.setOnClickListener(this);}@Overridepublic void onClick(View v) {//如果有多个空间设置点击事件,我们这里需要统一处理的话,需要判断是//哪一个控件if(v == mPlusOrMinus){Log.d(TAG, "点击了mPlusOrMinus" + ((TextView)v).getText().toString());}else if(v == mPlus){//同样的方式去判断}//另一种方式及时用switch来判断id//先拿到idint id = v.getId();switch(id){case R.id.tv_number_one://one这个内容被点击了,就在这里处理break;case R.id.tv_equal://处理等号事件break;}}

控件初始化

  /**在这里找到控件*/private  void initView(){mCancel = (TextView) this.findViewById(R.id.tv_cancel);mPlusOrMinus = (TextView) this.findViewById(R.id.tv_plus_or_minus);mMod = (TextView) this.findViewById(R.id.tv_mod);mDivider = (TextView) this.findViewById(R.id.tv_divider);mOne = (TextView) this.findViewById(R.id.tv_number_one);mTwo = (TextView) this.findViewById(R.id.tv_number_two);mThree = (TextView) this.findViewById(R.id.tv_number_three);mTime = (TextView) this.findViewById(R.id.tv_time);mFour = (TextView) this.findViewById(R.id.tv_number_four);mFive = (TextView) this.findViewById(R.id.tv_number_five);mSix = (TextView) this.findViewById(R.id.tv_number_six);mMinus = (TextView) this.findViewById(R.id.tv_minus);mSeven = (TextView) this.findViewById(R.id.tv_number_seven);mEight = (TextView) this.findViewById(R.id.tv_number_eight);mNine = (TextView) this.findViewById(R.id.tv_number_nine);mPlus = (TextView) this.findViewById(R.id.tv_plus);mZero = (TextView) this.findViewById(R.id.tv_number_zero);}

Android onCreate 详解相关推荐

  1. 【转】Android菜单详解——理解android中的Menu--不错

    原文网址:http://www.cnblogs.com/qingblog/archive/2012/06/08/2541709.html 前言 今天看了pro android 3中menu这一章,对A ...

  2. Android菜单详解——理解android中的Menu

    前言 今天看了pro android 3中menu这一章,对Android的整个menu体系有了进一步的了解,故整理下笔记与大家分享. PS:强烈推荐<Pro Android 3>,是我至 ...

  3. android WebView详解,常见漏洞详解和安全源码(下)

    上篇博客主要分析了 WebView 的详细使用,这篇来分析 WebView 的常见漏洞和使用的坑.  上篇:android WebView详解,常见漏洞详解和安全源码(上)  转载请注明出处:http ...

  4. android子视图无菜单,Android 菜单详解

    Android中菜单分为三种,选项菜单(OptionMenu),上下文菜单(ContextMenu),子菜单(SubMenu) 选项菜单 可以通过两种办法增加选项菜单,一是在menu.xml中添加,该 ...

  5. Android SharedFlow详解

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/121911675 本文出自[赵彦军的博客] 文章目录 系列文章 什么是SharedF ...

  6. android fragment 优势,Android Fragment详解

    参考网址:Android Fragment详解 一.什么是Fragment? Fragment:是Android3.0开始新增的概念,意为碎片.Fragment是依赖于Activity的,不能独立存在 ...

  7. Android Notification 详解——基本操作

    Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...

  8. Android NFC详解(高级)

    上一章节讲到了 Android NFC的基本应用(Android NFC详解),这章延伸一下,介绍各种高级 NFC 应用,例如如何使用各种标签技术.如何写入 NFC 标签以及如何执行前台调度(借助前台 ...

  9. Android UI详解之布局管理器(一)

    Android UI详解之布局管理器 一.布局管理器 ①顶级父类View ②子类GroupView ③AbsoluteLayout.FrameLayout.LinearLayout.GridLayou ...

最新文章

  1. Build Search for Common Use Cases
  2. java调用本地shell_java通过ProcessBuilder执行本地shell命令 获取ip配置信息
  3. Linux中添加pycharm源,linux下python+pycharm安装
  4. IOS 控件 - Swift 集成 IOS 自带 API 扫描二维码
  5. oracle学习笔记一:用户管理(2)创建删除用户
  6. ios 构建版本一直在处理中_iOS -打包上传成功,在构建版本一直刷不出来
  7. mysql 硬负载_软负载均衡和硬负载均衡
  8. 如何在 Apache Flink 中使用 Python API?
  9. python3颜色代码_python3中布局背景颜色代码分析
  10. AI 重塑 IT 的 5 种方式
  11. 如何在Azure上创建和部署云服务
  12. WSO2 Micro Integrator环境安装及部署
  13. iOS性能优化之Leaks动态分析
  14. phpstudy如何创建mysql_PHPStudy怎样创建数据库
  15. 如何生成支付宝小程序链接,点击直接打开并进入某个页面
  16. 移动硬盘安装manjaro 20.2以及常用软件安装
  17. 第二章开发环境搭建——第2节-高德开放平台
  18. 淘宝【高佣卷】、【精品券】、【详情图片】
  19. 阿里发布虚拟美女“俪知”,会说东北话、四川话、河南话和粤语等
  20. 运筹说 第57期 | 整数规划的分支定界法

热门文章

  1. 几种常用的HTML文字移动代码[转载]
  2. 使用pmml实现跨平台部署机器学习模型
  3. python模型保存与恢复 pmml_Python 调用 PMML
  4. Android---SpringBoot实现前后端数据交互
  5. 英菲尼迪tlme是什么意思_谁能说说英菲尼迪车标的含义?
  6. html overflow隐藏滚动条,css隐藏滚动条方法
  7. Python Flask Web教程014:Flask 消息闪现
  8. 使用QPainter绘图
  9. app图标角标产品设计_新手如何设计App的图标Logo?
  10. PHP做中文分词技术