开启新界面,获取返回值
- startActivityForResult
- setResult
- onActivityResult
Activity的生命周期
什么是生命周期 对象从创建到被垃圾回收过程中一定会执行的
onStart方法在activity界面用户可见的时候调用 onStop方法在activity界面用户不能用的时候调用 onResume方法为获得焦点 onPause方法为失去焦点,暂停
生命周期的重要概念
- entire lifetime
完整生命周期 onCreate -- onStart -- onResume -- onPause -- onStop -- onDestory
- visible lifetime
- 可视生命周期
onstart -- onresume -- onpause --onstop
- foreground lifetime
- 前台生命周期
onresume -- onpause
横竖屏切换的生命周期
- 横竖屏朝向固定 android:srceenOrientaion="portrait" landspace
- 设置 android:configChanges="keyboardHidden/screenSize/orientation"
任务栈
task stack * task:一个应用程序一般包括多个activity,每个activity都是用来处理用户交互的一个任务 * stack: 栈,是一种特殊的数据结构,队列也是一种特殊的数据结构.
任务栈就是用来记录用户的操作的,记录的是activity打开的先后顺序,后打开的界面先关闭,如果整个任务栈里面打开的activity都被关闭了,就是应用程序被退出了
一个应用程序一般只有一个任务栈,但是也可能对应有多个任务栈
activity的启动模式
- standard:标准的启动模式(如果不作说明,都是标准启动模式)
默认应用场景 * singleTop:单一顶部模式 如果activity已经被开启,并且处于任务栈的栈顶,就不会创建新的activity,而是复用已经开启的activity.为了防止出现一些奇怪的用户体验,推荐使用这一模式.整个任务栈可以有多个activity实例存在 应用场景:短信发送界面
- singletask: 单一任务栈
在整个任务栈里面只允许有一个当前activity的实例存在. 如果要开启的activity在任务栈中已经存在,直接复用这个已经存在的activty,并且把在这个activity上面的所有其他的activity给清空
应用场景: 如果一个activity非常消耗内存和cpu资源,建议把这个activity做成singletask的模式.浏览器的browerActivity
- singleInstance: 单一实例
整个手机操作系统只有一个实例存在,并且运行在自己的单独的任务栈里面 通话界面的activity