再谈Activity生命周期

首先来幅很经典的图,看完之后再说话

1、启动一个新的Activity A,执行onCreate() -> onStart() -> onResume,此时该Activity获取焦点并且运行在前台。

2、当Activity A失去焦点但是仍然可见,也就是当我们重新启动一个新的Activity B,Activity B是透明的或者尺寸并不是全屏显示,这样我们还是可以看到底部的Activity A,但是它被Activity B覆盖或者部分覆盖,所以此时Activity A会执行onPause()方法。

3、当Activity A完全被另一个Activity B覆盖并且不可见,它就会执行onStop()方法。

4、当执行finish()方法或者系统回收该Activity的时候,执行onDestroy()方法。

5、当Activity获取到焦点的时候,也就是该Activity再次被置于前台的时候,会再次执行onResume方法。

6、当Activity由不可见变为可见的时候,会执行onRstart() -> onStart()方法。

问题:

1、onCreate(),onStart(), onRestart(), onResume(), onPause(), onStop(), onDestroy()的作用?

(1) onCreate()在Activity创建的时候执行的,在该Activity没有被销毁的前提下,onCreate()只会执行一次,除非Activity被回收,需要再次创建。所以onCreate()一般进行一些初始化操作,例如:initView(), initData()。

(2) onStart()和onRestart()的作用并不是很明显,它们的区别是,当Activity创建之后,会执行onStart()方法,但是不会执行onRestart()方法,当该Activity执行完onStop()之后,也就是该Activity不可见之后,我们再次回到该Activity变得可见的时候,它会执行onRestart() -> onStart()方法。

(3) onResume()方法是当Activity获得焦点的时候会执行,也就是该Activity被置于前台处于激活状态的时候执行,如果我们希望知道Activity是否被置于前台,我们可以在该方法中使用SharedPreferences设置一个标记变量为true,这样在后台,我们就可以通过查看这个标记来获取该Activity的状态。

(4) onPause()是在Activity失去焦点的时候执行和onStop()是在Activity变得不可见的时候执行,所以我们如果想知道Activity是否被置于后台变得不可见,同样可以使用SharedPreferences设置一个标记变量为false,这样在后台,我们就可以通过查看这个标记来得到Activity的状态。

(5) onDestroy()方法是在Activity被回收的时候执行,所以在onDestroy()方法里面,我们一般做一些资源回收的操作。

2、当启动一个Activity之后,然后点击Home键,Activity的声明周期函数的执行过程?

当点击Home键的时候,因为回到了桌面,所以Activity会失去焦点变得不可见,所以会执行onPause() -> onStop(),onDestroy()方法不执行,当系统把这个Activity回收掉的时候才会执行。

3、当启动一个Activity之后,点击Back回退键,Activity的声明周期函数执行过程?

当点击Back回退键的时候,相当于要退出该Activity,Activity的执行过为onPause() -> onStop() -> onDestroy()。

时间: 2024-11-11 06:36:58

再谈Activity生命周期的相关文章

angular2系列教程(五)Structural directives、再谈组件生命周期

今天,我们要讲的是structural directives和组件生命周期这两个知识点.structural directives顾名思义就是改变dom结构的指令.著名的内建结构指令有 ngIf, ngSwitch and ngFor. 例子 例子是我自己改写的,编写一个structural directives,然后通过这个指令实例化和注销组件,在此同时监视组件生命周期. 源代码 UnlessDirective 这个指令是官网示例中的指令. src/unless.directive.ts im

android --Activity生命周期具体解释

一. 再探Activity生命周期 为了研究activity的生命周期,简单測试代码例如以下. package com.example.testactivity; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.Menu; public class MainActivity extends Activity { private static fi

android --Activity生命周期详解

一. 再探Activity生命周期 为了研究activity的生命周期,简单测试代码如下. package com.example.testactivity; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.Menu; public class MainActivity extends Activity { private static fina

浅谈Android之Activity生命周期

 Activity作为四大组件之一,出现的频率相当高,基本上我们在android的各个地方都能看见它的踪影,因此深入了解Activity,对于开发高质量应用程序是很有帮助的.今天我们就来详细地聊聊Activity的生命周期,以便我们在以后的开发中能如鱼得水. 一.初识Activity   在日常应用中Activity是与用户交互的接口,它提供了一个用户完成相关操作的窗口.当我们在开发中创建Activity后,通过调用setContentView(View)方法来给该Activity指定一个布局界

Android apk动态加载机制的研究(二):资源加载和activity生命周期管理

出处:http://blog.csdn.net/singwhatiwanna/article/details/23387079 (来自singwhatiwanna的csdn博客) 前言 为了更好地阅读本文,你需要先阅读Android apk动态加载机制的研究这篇文章,在此文中,博主分析了Android中apk的动态加载机制,并在文章的最后指出需要解决的两个复杂问题:资源的访问和activity生命周期的管理,而本文将会分析这两个复杂问题的解决方法.需要说明的一点是,我们不可能调起任何一个未安装的

Activity生命周期详解

我们来看一下这一张经典的生命周期流程图: 相信不少朋友也已经看过这个流程图了,也基本了解了Activity生命周期的几个过程,我们就来说一说这几个过程. 1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态. 2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行. 3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onRe

Android——Activity生命周期(转)

Activity生命周期 子曰:溫故而知新,可以為師矣.<論語> 学习技术也一样,对于技术文档或者经典的技术书籍来说,指望看一遍就完全掌握,那基本不大可能,所以我们需要经常回过头再仔细研读几遍,以领悟到作者的思想精髓. 近来回顾了一下关于Activity的生命周期,参看了相关书籍和官方文档,也有了不小的收获,对于以前的认知有了很大程度上的改善,在这里和大家分享一下. 熟悉javaEE的朋友们都了解servlet技术,我们想要实现一个自己的servlet,需要继承相应的基类,重写它的方法,这些方

Android 第六课——Activity生命周期

声明:本文转载自 http://blog.csdn.net/liuhe688/article/details/6733407 , 感觉读了这篇文章之后,对Activity又是一个更深层次的理解,所以果断手贱转载了!希望自己以后能多看看这篇文章,提升自己! 熟悉javaEE的朋友们都了解servlet技术,我们想要实现一个自己的servlet,需要继承相应的基类,重写它的方法,这些方法会在合适的时间被servlet容器调用.其实android中的Activity运行机制跟servlet有些相似之处

Android Activity 生命周期

生命周期流程图: 相信不少朋友也已经看过这个流程图了,也基本了解了Activity生命周期的几个过程,我们就来说一说这几个过程. 1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态. 2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行. 3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运