Android 生命周期
时间:2020-05-09
本文章向大家介绍Android 生命周期,主要包括Android 生命周期使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Android 生命周期
返回栈
Android中的Activity是以栈的形式运行的,每启动一个Activity就入栈,且永远显示栈顶的Activity,按下Back或执行finish()时,栈顶Activity出栈。
Activity活动状态
运行状态
处于栈顶的Activity。
暂停状态
不处于栈顶,但可见的Activity。
停止状态
不处于栈顶,且不可见Activity。
销毁状态
不在栈中的Activity。
Activity关于状态的方法
- onCreate():启动Activity就会执行的方法,且没有被销毁的情况下只执行一次。
- onStart():每次将Activity由不可见变成可见时,就会执行。
- onResume():Activity处于栈顶,且可见,又处于可交互状态时,执行。
- onPause():当Activity不处于栈顶,且可见,又不可交互时,执行。
- onStop():当Activity不处于栈顶,且不可见,又不可交互时,执行。
- onDestroy():当Activity出栈时,执行,执行后Activity为销毁状态。
- onRestart():由暂停转为运行之前调用。
执行顺序:
内存自动回收
只有Activity处于暂停/销毁状态时,才会被回收。
保存被回收Activity的数据
使用onSaveInstanceState()方法,当Activity被停止后会执行onSaveInstanceState()方法,用来防止Activity在停止的状态下被内存回收,导致数据丢失,那么我们就可以使用此函数来保存Activity的临时数据。
注:当按下BACK时,不会保存数据。
测试本段代码:启动后,在模拟器中将自动旋转屏幕打开,然后旋转一下屏幕,当前的Activity就会被销毁重建一次。
private static final String TAG = "MainActivity";
@Override
protected void onSaveI
nstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
String tempData = "temp data";
outState.putString("temp_data",tempData);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate: ");
setContentView(R.layout.activity_main);
if (savedInstanceState != null){
String tempData = savedInstanceState.getString("temp_data");
Log.d(TAG, "onCreate: "+tempData);
}
}
原文地址:https://www.cnblogs.com/lisztomania/p/12855271.html
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- ES的Query、Filter、Metric、Bucketing使用详解
- Golang的单引号、双引号与反引号
- CentOS配置docker和docker-compose
- 给Linux增加swap内存
- 网鼎杯2018-Fakebook
- 强网杯2019-高明的黑客
- CISCN2019华北赛区Day2-HackWorld
- ZJCTF-NiZhuanSiWei
- xxe漏洞学习
- De1CTF2019-SSRFME
- BJDCTF2nd-EasyMd5
- BJDCTF2nd-fakegoogle
- java_Scanner类、Random类、ArrayList 类的使用
- 使用Python获取Oracle索引信息
- 监控Oracle数据泵状态