首页 > 学院 > 开发设计 > 正文

安卓activity的基础知识

2019-11-09 14:44:23
字体:
来源:转载
供稿:网友

Activity的生命周期和启动模式

一. Activity的生命周期

1.完整生存期活动在 onCreate()方法和onDestroy()方法之间所经历的,就是完整生存期。一般情况下,一个活动会在 onCreate()方法中完成各种初始化操作,而在onDestroy()方法中完成释放内存的操作。

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

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

二、Activity得启动模式

1.standard 系统的默认模式在standard 模式(即默认情况)下,每当启动一个新的活动,它就会在返回栈中入栈,并处于栈顶的位置。对于使用standard 模式的活动,系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例。                        2.singleTop 当活动的启动模式指定为 singleTop,在启动活动时如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,不会再创建新的活动实例。但是当前活动如果不在栈顶,还是会重新创建活动的。3.singleTask当活动的启动模式指定为singleTask,每次启动该活动时系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把在这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例。4.singleInstance指定为singleInstance 模式的活动会启用一个新的返回栈来管理这个活动(其实如果 singleTask模式指定了不同的 taskAffinity,也会启动一个新的返回栈) 图中的活动2 就新开了活动栈按下 Back 键进行返回, 发现 ThirdActivity直接返回到了 FirstActivity,再按下 Back 键又会返回到 SecondActivity,再按下 Back 键才会退出程序,这是为什么呢?其实原理很简单,由于 FirstActivity 和ThirdActivity 是存放在同一个返回栈里的,当在ThirdActivity 的界面按下Back 键,ThirdActivity会从返回栈中出栈,那么 FirstActivity就成为了栈顶活动显示在界面上,因此也就出现了从 ThirdActivity 直接返回到FirstActivity 的情况。然后在 FirstActivity 界面再次按下Back 键,这时当前的返回栈已经空了,于是就显示了另一个返回栈的栈顶活动,即 SecondActivity。最后再次按下Back 键,这时所有返回栈都已经空了,也就自然退出了程序
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表