IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android组件Activity -> 正文阅读

[移动开发]Android组件Activity

Android组件Activity

  1. 什么是Activity
    Activity是一种可以包含用户界面的组件,主要用于和用户进行交互。每个Activity的生命周期最多有四种状态。活动是使用栈结构来管理的,我们称之为返回栈,Back Stack。

  2. 4种运行状态:
    ? (1)运行状态

? 当一个activity位于返回栈的栈顶时,这时activity就处于运行状态。系统最不愿意回收的就是处于运行状态的activity,因为这会带来非常差的用户体验。

? (2)暂停状态

? 当一个activity不再处于栈顶位置,但仍然可见时,这时activity就进入了暂停状态。你可能会觉得既然activity已经不在栈顶了,还怎么会可见呢?这是因为并不是每-一个activity都会占满整个屏幕的,比如对话框形式的activity只会占用屏幕中间的部分区域,你很快就会在后面看到这种activity。处于暂停状态的activity仍然是完全存活着的,系统也不愿意去回收这种activity(因为它还是可见的,回收可见的东西都会在用户体验方面有不好的影响),只有在内存极低的情况下,系统才会去考虑回收这种activity。

? (3)停止状态

? 当一个activity不再处于栈顶位置,并且完全不可见的时候,就进入了停止状态。系统仍然会为这种activity保存相应的状态和成员变量,但是这并不是完全可靠的,当其他地方需要内存时,处于停止状态的activity有可能会被系统回收。

? (4)销毁状态

? 当一个activity从返回栈中移除后就变成了销毁状态。系统会最倾向于回收处于这种状态的activity,从而保证手机的内存充足。

3.Activity的生命周期
Activity一共有七个回调方法,覆盖了Activity的生命周期的每一个环节。

? onCreate()。在activity第一次被创建的时候调用,在这个方法中完成初始化操作,比如加载布局,绑定事件等。

? onStart()。在activity有不可见变为可见的时候调用

? onResume()。在activity准备好和用户进行交互的时候调用。此时的activity一定位于返回栈的栈顶,并且处于运行状态。

? onPause()。在系统准备去启动或者恢复另一个activity的时候调用。通常会在这个方法中将一些小号CPU的资源释放掉,以及保存一些关键数据,但是在执行速度要快,否则会影响到新的栈顶activity的使用。

? onStop()。在activity不可见的时候调用,和onPause()的区别在于,如果启动的是一个对话框式的activity,那么onPause()会得到执行,而onStop()不会执行。

? onDestroy()。在activity被销毁之前调用,之后activity就变成销毁状态。

? onRestart()。在activity由停止变为运行状态之前调用,即activity被重新启动。

以上方法除了onRestart(),都是两两相对的,从而将activity分为三种生存期。

? 完整生存期

activity在onCreate()和onDestroy()之间经历的,就是完整生存期。activity会在onCreate()方法中完成各种初始化操作,而在onDestroy()方法中完成释放内存的操作。

? 可见生存期

activity在onStart()方法和onStop()方法之间所经历的, 就是可见生存期。在可见生存期内,activity对于用户总是可见的,即便有可能无法和用户进行交互。我们可以通过这两个方法,合理地管理那些对用户可见的资源。比如在onStart()方法中对资源进行加载,而在onStop( )方法中对资源进行释放,从而保证处于停止状态的activity不会占用过多内存。

? 前台生存期

activity在onResume( )方法和onPause( )方法之间所经历的就是前台生存期。在前台生存期内,activity总是处于运行状态的,此时的activity是可以和用户进行交互的,我们平时看到和接触最多的也就是这个状态下的activity。

在这里插入图片描述
4.Activity的4种启动方式
(1)standard模式

? standard模式是活动默认的启动模式,在该模式下活动的运行原理如下:我们指定活动3的启动模式为standard模式,假如此时返回栈内活动为1,2,3。这时候如果我们又要重新启动活动3时,由于活动3启动模式是standard,系统不会在乎这个活动3已经位于返回栈的栈顶,而是重新创建一个新的活动3实例,这时候返回栈里存在的活动就是1,2,3,3,再重新启动活动3时就变成了1,2,3,3,3。总而言之,每调用一个standard模式的活动,就会直接创建一这个活动的实例。

在这里插入图片描述

(2)singleTop模式:栈顶复用

? 和standard模式相比,如果要启动一个singlTop模式的活动,假如这个活动已经在栈顶了,那么系统就不再创建该活动的实例,而是直接使用(调用onNewIntent()方法,再回调onResume()方法重用)。按照上面的例子,假如返回栈里面有活动1,2,3,我们指定活动3的启动模式为singleTop模式,此时重新启动活动3时,系统不会再创建一个活动3的实例,而是直接使用栈顶的活动3,此时返回栈里的活动仍然是1,2,3。不过当我们要启动活动1或者活动2时,由于活动1,2不在栈顶,系统还是会创建新的活动1,2实例。

在这里插入图片描述

(3)singleTask模式:栈内复用

? 通过使用第二种singleTop模式可以很好的解决重复创建栈顶活动的问题,但是如果活动不在栈顶位置,我们还是需要再创建新的活动实例,那么怎么才能使整个返回栈内只存在活动的一个实例呢,这就用到了singlTask模式。在singlTask模式下,每次启动活动时系统都会在返回栈中检查是否存在该活动的实例,如果已经存在了,就会把该活动上面的所有活动全部出栈,使得该活动处于栈顶位置(同样调用onNewIntent()方法,然后回调onRestart()—>onStart()—>onResume()重用),如果不存在系统再创建活动实例。使用上面的例子,我们指定活动1的启动模式为singleTask,假如返回栈里有活动1,2,3,这时候系统想要重新启动活动1时,就会把活动2,3出栈,此时返回栈里的活动就只剩1了。

在这里插入图片描述

(4)singleInstance模式:单例模式

? singleInstance模式比较特殊,当我们指定一个活动的启动模式为singleInstance时,如果需要启动这个活动,就会为这个活动单独创建一个新的活动栈。举个例子,假如返回栈(A)里已经有一个活动1,我们指定活动2的启动模式为singleInstance,当我们启动活动2时,系统就会创建一个新的返回栈(B),将活动2入栈到返回栈B,接下来如果又有活动3,4入栈,活动3,4会入栈到返回栈A,此时返回栈A里面存在的活动为1,3,4,返回栈B里面存在的活动为2。此时活动如果出栈,会先将返回栈A里面的活动4,3,1依次出栈,然后再将返回栈B里面的活动2出栈。
在这里插入图片描述

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-11 12:31:59  更:2021-08-11 12:33:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 8:19:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码