欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android四大组件之Activity

程序员文章站 2022-08-14 10:02:08
1.什么是ActivityActivity是一种可以包含用户界面的组件,主要用于和用户进行交互。2.Activity的生命周期Android是通过任务来管理Activity的,一个任务就是一组存放在栈里的Activity的集合,这个栈也叫做返回栈(Back Stack)。每当启动一个新的Activity,就会在返回栈中入栈,并处于栈顶的位置。每当我们销毁一个Activity时,在栈顶的Activity就会出栈,这时前一个入栈的就会重新在栈顶出现。系统会显示处于栈顶的Activity给用户。每...

什么是Activity

Activity是一种可以包含用户界面的组件,主要用于和用户进行交互。

Activity的生命周期

Android是通过任务来管理Activity的,一个任务就是一组存放在栈里的Activity的集合,这个栈也叫做返回栈(Back Stack)。每当启动一个新的Activity,就会在返回栈中入栈,并处于栈顶的位置。每当我们销毁一个Activity时,在栈顶的Activity就会出栈,这时前一个入栈的就会重新在栈顶出现。系统会显示处于栈顶的Activity给用户。

每个Activity的生命周期最多有四种状态。

运行状态

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

暂停状态

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

停止状态

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

销毁状态

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

Activity的生存期

Activity一共有7个回调方法,覆盖了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。

Activity的启动模式

standard

activity的默认启动,可以不用配置,在这种模式下,系统不会在乎该activity是都已经存在,每次启动都会创建该activity的一个新的实例。也可以理解为相同的activity可以叠加。

Android四大组件之Activity

singleTop

返回栈栈顶是firstactivity,现在要在启动firstactivity,并不会产生新的实例,要是启动secondactivity,会产生新的实例,secondactivity到了栈顶。接下来启动firstactivity,同样会产生新的实例。

Android四大组件之Activity

singleTask

每个activity只会有一个实例,firstactivity在栈顶时,在启动firstactivity,不会产生实例。要是启动secondactivity,会先判断栈中存在,secondactivity存在,不会创建,不存在的话创建新的实例。

Android四大组件之Activity

singleInstance

每个activity只有一个实例,会有一个单独的返回栈来管理这个activity。不管哪个应用的程序来访问这个activity,都公用的同一个返回栈。

Android四大组件之Activity

本文地址:https://blog.csdn.net/be_gin_ner/article/details/107471430

相关标签: Android