当前位置:首页 » 安卓系统 » androidactivity生命

androidactivity生命

发布时间: 2024-04-27 07:33:48

Ⅰ 如何理解Android中Activity的三个“生命周期”

下图是官方文档里的Activity生命周期图,其中彩色标出的四个框是Activity的四种状态,当Activity的状态改变时会触发一个或多个onXXX()方法。


onCreate()

当Acitivity第一次被创建时触发,一般在这里要做的事情包括创建视图(setContentView())、向视图填充必要的数据等等。

onRestart()

这个我比较少用到,按文档上的介绍,如果Activity之前被stop过,那么下一次onStart()方法之前会先触发这个方法。

onStart()

只要Activity从不可见变成可见,就会触发到这个方法,但被AlertDialog遮挡/显示的情况不算在内。

onResume()

当Activity来到最上层的时候,也就是开始与用户直接交互时,触发这个方法。例如本来Activity被一个AlertDialog遮挡,当这个AlertDialog消失时,onResume()方法就被触发。

onPause()

和onResume()的触发条件刚好相反,如果Activity本来在最上层,当它要让出最上层的位置时会触发这个方法。onPause()和onResume()是被触发最频繁的两个方法,所以在这里不应该执行过于消耗资源的方法。

onStop()

当有其他Activity覆盖了当前Activity时,不论另一个Activity是新开始的还是从下层移至最上层的,当前Activity的onStop()方法都会被触发。

onDestroy()

Activity生命周期的终点。有两种情况会导致它被触发:1)执行了Activity#finish()方法;2)Android系统由于资源不足等原因决定杀掉Activity所在进程。通过isFinishing()方法可以判断出是哪种情况。在这个方法里,我们一般要做的事情是释放Activity占有的资源,例如后台正在进行的下载线程等等。

最后,举个实际例子来说明,假设你有一个“首页Activity”和一个“编辑页Activity”。

•当用户点击首页里的“开始编辑”按钮时,首页的onPause()->onStart()onStop()依次触发,编辑页的onCreate()->onStart()->onResume()依次触发;(感谢James.H.Fu指出的错误)

•当用户在编辑页按下“返回”按钮时,编辑页的onPause()->onStop()依次触发,之后首页的onStart() -> onResume()依次触发;

•这时用户在首页按下“返回”按钮,首页的onPause()->onStop()->onDestroy()依次触发。

Ⅱ android寮鍙戜腑镄𪞝ctivity鐢熷懡锻ㄦ湡鏄浠涔淇濆瓨activity镄勪竴浜涗俊鎭鍦ㄥ摢涓鐢熷懡锻ㄦ湡鏂规硶涓

銆愮瓟妗堛戯细鍏辨湁涓冧釜锻ㄦ湡鍑芥暟锛
void onCreate(Bundle savedInstanceState) 绗涓娆″垱寤烘椂璋幂敤
void onStart() 琚鐢ㄦ埛鍙瑙佹椂璋幂敤
void onRestart() 褰揂ctivity澶勪簬stop鐘舵佸张琚閲嶆柊钖锷ㄦ椂璋幂敤
void onResume() 褰撹幏寰楃剑镣瑰嵆鍙涓庣敤鎴蜂氦浜掓椂璋幂敤
void onPause() 褰揿け铡荤剑镣规椂璋幂敤
void onStop() 褰扑笉鍙瑙佹椂璋幂敤
void onDestroy() 褰挞攒姣佹椂璋幂敤

Ⅲ Android中,activity生命周期是指什么

一个Android应用程序在运行时,对于底层的Linux Kernel而言都是一个单独的进程,但是对于Android系统而言,因为局限于手机画面的大小与使用的考虑,不能把每一个运行中的应用程序窗口都显示出来。

所以通常手机系统的界面一次仅显示一个应用程序窗口,Android使用了Activity的概念来表示界面。

运行中的应用程序分为五大类,分别是:

前景模式:foreground process

可见模式:visible process

背景模式:background process

空白模式:empty process

服务模式:service process

除了最后一个,貌似service process是Service的事情了。其他都与Activity相关。

Android系统会判断应用程序Activity是属于哪一个类,给予不同的Activity生命周期。

Activity的生命周期也是它所在进程的生命周期。

Activity生命周期的运行如图:

Activity生命周期的每一个阶段都表示为金字塔上的一个台阶,当系统创建一个新的activity时,每一个回调函数都把activity的状态网上挪一步。

金子塔的最顶层就是activity运行在前景模式下,用户可与之交互。

当用户离开activity时,系统调用另一些回调函数,将activity的状态从金字塔中一步一步移下来。有些情况下,activity只移动一部分,并没有完全到底,这些情况下仍然可以移动回顶部。

注意这些状态中只有三个状态是静态(static)的,意味着activity只有在这三个状态下能停留一段时间:

Resumed:foreground,用户可交互running state

Paused:部分被遮挡,不能接收用户输入也不能执行代码,另一个半透明或者小的activity正挡在前面。

Stopped:activity完全被遮挡,不能被用户看到,activity被认为在background,当Stopped的时候,activity实例的状态信息被保留,但是不能执行任何代码。

其他状态都是转换状态,系统会很快调用其他相应的回调函数离开这些状态。比如系统调用onCreate()之后,会很快调用onStart(),之后是onResume()。

相信不少朋友也已经看了以上的分析之后,也基本了解了Activity生命周期的几个过程,我们就来说一说这几个过程。

1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。

2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。

3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。

4.当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。

5.用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。

6.当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。

7.用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。

有关于Activity的生命周期是Android中最基础和最重要的知识,如果你想系统的了解一下Activity的生命周期,推荐你可以去一个叫做秒秒学的教程网站上看看。

热点内容
如何在机房安装ntp服务器 发布:2024-05-09 01:13:57 浏览:204
ideajavaidea 发布:2024-05-09 01:02:14 浏览:964
oas存储 发布:2024-05-09 00:57:49 浏览:800
android点击弹出菜单 发布:2024-05-09 00:56:52 浏览:98
大家对云服务器认知度 发布:2024-05-09 00:46:00 浏览:659
思科视频会议如何配置 发布:2024-05-09 00:45:59 浏览:669
centos安装ftp服务器配置 发布:2024-05-09 00:45:06 浏览:81
幕布电脑版服务器连接失败怎么整 发布:2024-05-09 00:38:21 浏览:723
armlinuxpython 发布:2024-05-09 00:30:02 浏览:484
充电源码 发布:2024-05-09 00:29:55 浏览:386