在其生命周期内,activity在运行、暂停和停止三种可能的状态间进行转换,不同状态之间互相转换的时候的调用不同的方法,重写这些方法就能在活动切换,被销毁时保存或传输数据,在被启动、被切换出来时接收数据。或是完成其他一些工作。

然后是一个简单的demo,拥有两个活动,主活动中有一个启动第二个活动的按钮,第二个活动中有返回第一个很活动的按钮。

public class MainActivity extends AppCompatActivity {

    // 在完整生存期开始时调用
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);//加载布局
Log.d("MainActivity","onCreate");
Button button1 = (Button) findViewById(R.id.button1);
Button button2 = (Button) findViewById(R.id.button2); //启动第二个活动
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
}
}); //销毁当前活动
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
} //由不可见转换为可见时调用
@Override
protected void onStart() {
super.onStart();
Log.d("MainActivity","onStart()");
} //由可见转换为不可见时调用
@Override
protected void onStop() {
super.onStop();
Log.d("MainActivity","onStop()");
} //离开前台,但不是完全不可见
@Override
protected void onPause() {
super.onPause();
Log.d("MainActivity","onPause()");
} //返回前台,准备好和用户交易
@Override
protected void onResume() {
super.onResume();
Log.d("MainActivity","onResume()");
} //重启处于停止状态的活动时对用
@Override
protected void onRestart() {
super.onRestart();
Log.d("MainActivity","onRestart()");
} // 在完整生存期结束时调用
@Override
protected void onDestroy() {
// 清空所有的资源,包括结束线程、关闭数据库连接等。
super.onDestroy();
Log.d("MainActivity","onDestroy");
}
}

每个方法中都会有一个该方法名字的打印。

首先是第一次启动活动,

先出现了onCreate onStart、onResume(创建->启动->运行)方法

点击按钮启动第二个活动

点击第二个活动的按钮,启动第一个活动

点击销毁按钮,调用finish方法销毁第一个活动

这时第二个活动会被打开,也就是说活动再相互被启动的时候,不会被销毁,onDestory()不会被调用,这时点击返回,

由会启动第一个活动,然后并没有调用onCreate()方法,这就说明刚刚销毁的活动不是这个活动,回想一下刚刚的整体过程就是,一开始打开启动的MainActivity启动了SecondActivity,然后SecondActivity通过Intent启动的MainActivity和刚开始那个MainActivity并不是同一个,当SecondActivity通过Intent启动的MainActivity的时候,栈中一共有三个活动,该开始启动的MainActivity和SecondActivity处在停止状态,MainActivity处于栈底,所以销毁掉栈顶的MainActivity后SecondActivity就被重启。

销毁栈顶的MainActivity,在SecondActivity点击返回后,打开了最开始的MainActivity,这时点击home键回到桌面

这里可以看到,只有是活动变得完全不可见,无论是启动了其他活动,还是返回桌面都会出现onPause、onStop(暂停->停止)方法。

android ——活动的生命周期的更多相关文章

  1. Xamarin.Android活动的生命周期

    一.前言 用过Android手机的人一定会发现一种现象,当你把一个应用置于后台后,一段时间之后在打开就会发现应用重新打开了,但是之前的相关的数据却没有丢失.可以看出app的“生命”是掌握在系统手上的, ...

  2. Android活动的生命周期

    掌握活动的生命周期对任何Android开发者来说都非常重要,当你深入理解活动的生命周期之后,就可以写出更加连贯流畅的程序. -------------------------------------- ...

  3. android 活动的生命周期

    掌握活动的生命周期非常重要,因为一个正常的android应用,会有很多的活动,如何在这些活动之间进行切换.数据的交互等,就经常会用到活动的生命周期这一块的知识.可以说,只要掌握了活动的生命周期,才能更 ...

  4. 记不住的Android活动的生命周期

    Activity基类定义了管理一个互动的生命周期的一系列事件. Activity生命周期的一系列事件onCreate()——当前活动首次被创建时使用.onStart()——当前活动对用户可见时调用.o ...

  5. Android笔记——活动的生命周期

    一.活动的重要性 掌握活动的生命周期对任何 Android 开发者来说都非常重要,当你深入理解活动的生命周期之后,就可以写出更加连贯流畅的程序,并在如何合理管理应用资源方面,你会发挥的游刃有余.你的应 ...

  6. Android学习笔记(五)——活动的生命周期

    //此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 为了能写出流畅连贯的程序,我们需要了解一下活动的生命周期. 一.返回栈 Android 中的活动是可以层叠的. ...

  7. Android studio教程:[5]活动的生命周期

    想要学好安卓开发,就必须理解安卓软件的生命周期,明白一个活动的创建.启动.停止.暂停.重启和销毁的过程,知道各个阶段会调用什么函数进行处理不同的情况,这里我就通过一个简单的例子让大家明白一个活动的生命 ...

  8. Android基础知识05—活动的生命周期

    ------ 活动的生命周期 ------ Android是使用任务Task来管理活动的,一个任务就是一组存放在栈里的活动的集合.每当启动一个活动 ,他就会在返回栈中入栈,并处于栈顶位置.而每当我们按 ...

  9. android:activity活动的生命周期

    掌握活动的生命周期对任何 Android 开发者来说都非常重要,当你深入理解活动的生命 周期之后,就可以写出更加连贯流畅的程序,并在如何合理管理应用资源方面,你会发挥的 游刃有余.你的应用程序将会拥有 ...

随机推荐

  1. 对于Spring中AOP,DI,IoC概念的理解

    IOC IoC(inversion of Control),控制反转.就好像敏捷开发和SCRUM一样,不是什么技术,而是一种方法论,一种工程化的思想.使用IoC的思想意味着你将设计好的对象交给容器控制 ...

  2. python3 连接数据库注意点

    类库:pymysql ''' Created on 2019年 @author: Root ''' import pymysql from name import getName # 数据库连接信息 ...

  3. jdk源码--LinkedList

    本文基于jdk1.8_171 LinkedList介绍 之前看了ArrayList,内部是一个数组.这次看了LinkedList,作用和ArrayList一样,但是内部是链表形式.链表结构如下图: 数 ...

  4. 手动启动log4j|nginx实现http https共存

    手动加载log4j.xml文件 DOMConfigurator.configure("src/main/resources/log4j.xml"); log4j.propertie ...

  5. 卸载 python 3.7.3 再安装 遇到 error 0x80070001

    这件事告诉我,千万不要手贱,闲的发慌蛋疼 手贱把用得好好的python 3.7.3 卸载后怎么装也装不回去, 告诉我遇到了 error 0x80070001 最终还是靠强大的谷歌找到了办法,幸好没有重 ...

  6. Docker学习第一天

    1.Docker包含三个基本概念 镜像(Image) 容器(Container) 仓库(Repository) Docker镜像就是一个只读的模板,镜像可以用来创建Docker容器.Docker提供了 ...

  7. 使用gets函数常见问题

    C语言面试经常会考如下一道题,哪里有错误: #include <stdio.h>    int main()  {     char string[100] = {'\0'};       ...

  8. Shiro authentication for Apache Zeppelin

    Overview Apache Shiro is a powerful and easy-to-use Java security framework that performs authentica ...

  9. python菜鸟基础知识(二)

    3.2 字符串格式化 a = "------------- 我爱涛 -------------" b = "name:" c = "age:" ...

  10. Web服务器怎么解析URL

    问:Web服务器是如何将浏览器中输入的地址"http://localhost:8080/SimpleServlet/First" 答:以Java 为例(各种语言都是类似的) 1)地 ...