------ 活动的生命周期 ------

Android是使用任务Task来管理活动的,一个任务就是一组存放在栈里的活动的集合。每当启动一个活动 ,他就会在返回栈中入栈,并处于栈顶位置。而每当我们按下 Back 键或调用 finish()方法去销毁一个 活动时,处于栈顶的活动会出栈,这时前一个入栈的活动就会重新处于栈顶的位置。系统总是会显示处 于栈顶的活动给用户。

活动的生命周期最多可能有四种状态:

>> 运行状态: 活动处于栈顶位置

>> 暂停状态: 活动不再处于栈顶位置,但是仍可见,活动处于暂停状态。系统一般不会回收。

>> 停止状态: 活动不再处于栈顶位置,并不可见,活动处于停止状态。有可能会被系统回收。

>> 销毁状态: 系统会回收处于这种状态的活动,从而保证手机充足。

活动的生命周期,七个回调方法:

>> onCreate():活动第一次被创建的时候调用,一般完成活动的初始化操作,例如:加载布局, 绑定事件等。

>> onStart(): 活动由不可见变为可见。

>> onResume():活动处于运行状态,并且与用户进行交互。

>> onPause(): 系统准备去启动或者恢复另一个活动的时候调用。一般在这个方法中将一些资源 释放掉。但是这个方法的执行速度要快,不然会影响到新的栈顶活动的使用。

>> onStop():   活动在完全不可见的时候调用。与onPause方法的主要区别在:如果启动的是一个 对话框的活动,那么onPause方法得到执行,而onStop方法不会执行。

>> onDestroy(): 在活动销毁之前调用,之后活动变为销毁状态。

>> onRestart(): 活动由停止状态变为运行状态之前调用。

解决保证活动被系统回收之后出现数据丢失的问题:

Activity提供了一个onSaveInstanceState()回调方法,解决临时数据保存问题。例子:

@Override

protected void onSaveInstanceState(Bundle outState) {

  super.onSaveInstanceState(outState);

  String tempData = "Something you just typed";

  outState.putString("data_key", tempData);

}

启动活动读取临时数据代码,在onCreate方法中实现:

@Override

protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  requestWindowFeature(Window.FEATURE_NO_TITLE);

  setContentView(R.layout.activity_main);

  if (savedInstanceState != null) {

    String tempData = savedInstanceState.getString("data_key");

   }     

  ……

}

Android基础知识05—活动的生命周期的更多相关文章

  1. 【Android】8.0活动的生命周期(一)——理论知识、活动的启动方式

    1.0 Android是使用任务(Task)来管理活动的,活动就像栈一样堆放着在一起. 每个活动的生命周期最多可能会有四种状态: 1.1 运行状态 位于栈顶 1.2 暂停状态 不在栈顶但在界面上仍处于 ...

  2. 【Android】9.0活动的生命周期(二)——实际代码演示

    1.0  新建一个项目ActivityLifeCycleTest. 新建两个活动NormalActivity和DialogActivity,勾选“Generate Layout File”. 文件目录 ...

  3. Vue基础知识之指令和生命周期(一)

    优点:轻量易学,灵活. 核心:通过尽可能简单的API来实现响应的数据绑定和组合的视图组件. 1.数据绑定:数据改变,驱动视图的自动更新. 2.视图组件化:把整个网页拆分成一个个区块,每个区块都可以看成 ...

  4. Android基础知识06—活动的四大启动模式

    ------ 活动的启动模式 ------ 在实际项目中应该根据特定的需求为每个活动指定恰当的启动模式. 四种启动模式: standard . singleTop . singleTask . sin ...

  5. android 活动的生命周期

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

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

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

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

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

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

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

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

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

随机推荐

  1. 201521123054《JAVA程序设计》第三周学习总结

    本周学习总结 书面作业 代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; public st ...

  2. 201521123108 《Java程序设计》第2周学习总结

    1. 本章学习总结 学习了java的知识,虽然还不是太懂,以后一定会取得进步的 2. 书面作业 Q1. 使用Eclipse关联jdk源代码,并查看String对象的源代码(截图)? 答: Q2. 为什 ...

  3. 201521123112《Java程序设计》第11周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 线程终止可以使用boolean标志使线程中的run()方法退出. 线程让步使用Thead.yield(). 等待其 ...

  4. Java课程设计 学生基本信息管理系统 团队博客

    学生基本信息管理系统团队博客 项目git地址 https://git.oschina.net/Java_goddess/kechengsheji 项目git提交记录截图 项目功能架构图与主要功能流程图 ...

  5. 201521123016 《Java程序设计》第13周学习总结

    1. 本周学习总结 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu.edu.cn,分析返回结果有何不同?为什么会有这样的不同? ping w ...

  6. 201521123030 《Java程序设计》 第9周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 常用异常 1.题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己 ...

  7. 201521123066 《Java程序设计》第十四周学习总结

    1. 本周学习总结 2. 书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自己的学号.姓名) 在自己建立的数据库上执行常见SQL语句(截图) - ...

  8. Java: server/client 心跳机制实现 示例

    心跳机制 心跳机制是定时发送一个自定义的结构体(心跳包),让对方知道自己还活着,以确保连接的有效性的机制. 大部分CS的应用需要心跳机制.心跳机制一般在Server和Client都要实现,两者实现原理 ...

  9. WPF(C#) 矩阵拖动、矩阵动画、边缘展开动画处理。

    最近在研发新的项目,遇到了一个桌面模式下的难点--展开动画.之前动画这方面没做过,也许很多人开始做的时候也会遇到相关问题,因此我把几个重点及实际效果图总结展示出来: 我的开发环境是在VS2017下进行 ...

  10. SSH复用代码最终版

    web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="h ...