面试复习一 Activity生命周期(1)

原创 2018年04月17日 17:26:36

一、初识Activity

Activity是Android的四大组件之一。是用户操作的可视化界面;它为用户提供了一个完成操作指令的窗口。当我们创建完毕Activity之后,需要调用setContentView()方法来完成界面的显示;以此来为用户提供交互的入口。在Android App 中只要能看见的几乎都要依托于Activity,所以Activity是在开发中使用最频繁的一种组件。


二、Activity 的形态

在 android 中,Activity 拥有四种基本状态:
1. Active/Runing一个新 Activity 启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。
2. Paused 当 Activity 被另一个透明或者 Dialog 样式的 Activity 覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它仍然可见,但它已经失去了焦点故不可与用户交互。
3. Stoped 当 Activity 被另外一个 Activity 覆盖、失去焦点并不可见时处于 Stoped状态。
4. Killed Activity 被系统杀死回收或者没有被启动时处于 Killed状态。

当一个 Activity 实例被创建、销毁或者启动另外一个 Activity 时,它在这四种状态之间进行转换,这种转换的发生依赖于用户程序的动作。下图说明了 Activity 在不同状态间转换的时机和条件:

这里写图片描述

如上所示,Android 程序员可以决定一个 Activity 的“生”,但不能决定它的“死”,也就时说程序员可以启动一个 Activity,但是却不能手动的“结束”一个 Activity。当你调用 Activity.finish()方法时,结果和用户按下 BACK 键一样:告诉 Activity Manager 该 Activity 实例完成了相应的工作,可以被“回收”。随后 Activity Manager 激活处于栈第二层的 Activity 并重新入栈,同时原 Activity 被压入到栈的第二层,从 Active 状态转到 Paused 状态。例如:从 Activity1 中启动了 Activity2,则当前处于栈顶端的是 Activity2,第二层是 Activity1,当我们调用 Activity2.finish()方法时,Activity Manager 重新激活 Activity1 并入栈,Activity2 从 Active 状态转换 Stoped 状态,Activity1. onActivityResult(int requestCode, int resultCode, Intent data)方法被执行,Activity2 返回的数据通过 data参数返回给 Activity1。

三、Activity 生命周期一览

google官方获取

protected void onCreate(Bundle savedInstanceState); 
protected void onRestart(); 
protected void onStart(); 
protected void onResume(); 
protected void onPause(); 
protected void onStop(); 
protected void onDestory(); 

五、Activity生命周期认识

  • onCreate() :Activity创建的时候调用的,它是生命周期第一个调用的方法;我们在创建Activity时一般都需要重写该方法,然后可以setContentView() 设置布局,初始化控件等等。
  • onRestart():表示Activity正在重新启动,当Activity由不可见变为可见状态时,该方法被回调。这种情况一般是用户打开了一个新的Activity时,当前的Activity就会被暂停(onPause和onStop被执行了),接着又回到当前Activity页面时,onRestart方法就会被回调。
  • onStart():Activity回调该方法时,此时Activity已处于可见状态,只是还不可以与用户进行交互。可以简单理解为Activity已显示而我们无法看见摆了
  • onResume():当此方法回调时,则说明Activity已在前台可见,可与用户交互了(处于前面所说的Active/Running形态),onResume方法与onStart的相同点是两者都表示Activity可见,只不过onStart回调时Activity还是后台无法与用户交互,而onResume则已显示在前台,可与用户交互。当然从流程图,我们也可以看出当Activity停止后(onPause方法和onStop方法被调用),重新回到前台时也会调用onResume方法,因此我们也可以在onResume方法中初始化一些资源,比如重新初始化在onPause或者onStop方法中释放的资源。
  • onPause():此方法被回调时则表示Activity正在停止(Paused形态)
  • onStop() : 一般在onPause方法执行完成直接执行,表示Activity即将停止或者完全被覆盖(Stopped形态),此时Activity不可见,仅在后台运行。同样地,在onStop方法可以做一些资源释放的操作(不能太耗时)。
  • onDestory():这是Activity生命周期最后调用的方法,说明此Activity正在销毁,一般我们可以在此方法中做一些回收工作和最终的资源释放。

Activity生命周期(面试必问)

Activity生命周期 一个Activity可以基本上存在三种状态: 恢复 这项Activity是在屏幕前的,并有用户取得其焦点。(此状态,有时也简称为“运行”。)   暂停 另一个Ac...
  • u013128651
  • u013128651
  • 2016-04-10 19:28:02
  • 711

Android面试(Activity生命周期)

Activity作为Android的四大组件之一,是我们Android开发中打交道最为频繁的组件之一。而我们实际运用中却没有注意到很多Activity的细节知识点。所以在面试之中如果Activity相...
  • VickyWinner
  • VickyWinner
  • 2017-08-16 21:46:47
  • 322

数据库面试复习

索引:点击打开链接B树和B+树:点击打开链接最左匹配原则:点击打开链接(讲的特别好)MySQL查询性能优化:点击打开链接explain讲解:点击打开链接...
  • yaoqing_jingjing
  • yaoqing_jingjing
  • 2018-02-27 15:08:43
  • 95

Java基础面试复习一

做Java业务开发很久了,有些技术快忘了? 来吧,让我们从基础重新开始复习一下~~~ 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个publi...
  • ILOVESMJ
  • ILOVESMJ
  • 2016-05-12 15:47:56
  • 3894

面试复习—操作系统知识点

(1)
  • daijie2198492527
  • daijie2198492527
  • 2017-04-05 11:29:37
  • 591

java复习--面试

1 jdbc:Class.forName("oracle.jdbc.driver.OracleDriver");//加载驱动 Connection con = DriverManager.getCo...
  • sinat_34233802
  • sinat_34233802
  • 2016-11-29 20:23:35
  • 128

面试复习重点 算法 数据结构 【山科大牛陈磊整理】

算法、数据结构 一:算法 1. 算法的几个特征是什么。 2. 算法复杂性的定义。大O、θ、Ω、小o分别表示的含义。 3. 递归算法的定义、递归算法的两要素。 4. 分治算法的...
  • liuqiyao_01
  • liuqiyao_01
  • 2013-10-01 22:42:24
  • 6915

Android必考面试题之一——Activity的生命周期以及流程图

生命周期包括几个方法:onCreate()、onStart()、onResume()、onPause()、onStop()、onDestroy()...... 我们也基本了解了Activity...
  • csdavy103
  • csdavy103
  • 2016-12-19 16:53:14
  • 728

面试准备之数据结构

跳表 skipList浅析SkipList跳跃表原理及代码实现链表与跳表的异同:传统意义的单链表是一个线性结构,向有序的链表中插入一个节点需要O(n)的时间,查找操作需要O(n)的时间。如果我们使用图...
  • kainever
  • kainever
  • 2015-08-02 19:41:16
  • 479

面试复习——Android工程师之Android面试大纲

Activity面试题 1、Activity是什么 Activity是四大组件之一,它提供一个界面让用户点击和各种滑动操作,这就是Activity 2、Activity四种状态 runi...
  • qq_30379689
  • qq_30379689
  • 2017-06-26 18:49:50
  • 10537
收藏助手
不良信息举报
您举报文章:面试复习一 Activity生命周期(1)
举报原因:
原因补充:

(最多只允许输入30个字)