activity基础知识详解

activity是我们最熟悉的四大组件之一,主要通过一下3个方面介绍:

activity生命周期(在面试的时候多多少少都会被问到)
Android任务栈
Scheme跳转协议

一、activity生命周期
1、activity的4种状态
(1)running:activity处于栈顶,处于活动状态,用户点击屏幕,屏幕可以做出响应
(2)paused:失去焦点,用户点击屏幕没有响应,状态信息和成员变量还存在,但是内存紧张时被销毁。
(3)stopped:完全被覆盖,状态信息和成员变量也还存在,但是内存紧张时也会被销毁。
(4)killed:activity已经被系统回收掉了,状态信息和成员变量都已经不在了
2、activity的生命周期分析
生命周期图:
这里写图片描述
几个生命周期调用场景:
(1)activity启动->onCreate()->onStart()->onResume()
onCreate:做一些初始化操作
onStart:可见不可交互
onResume:可见可交互
(2)点击home键回到主界面(activity不可见)->onPaused()->onStopped()
(3)当再次回到原activity时->onRestart() -> onStart() -> onResume()
(4)退出当前activity时->onPause()->onStop()->onDestory()
(5)FirstActivity跳转到SecondActivity时(FirstActivity完全不可见)->FirstActivity:onPause()->SecondActivity:onCreate()->SecondActivity:onStart()
->SecondActivity:onResume()->FirstActivity:onStopped()
(6)A Activity上弹出一个对话框B时(A Activity仍然可见)->A:onPause()->B:onCreate()->B:onStart()->B:onResume()
(7)从B退回到A:调用B的onPause,A的onResume,B的onStop,onDestroy
(因为A自始至终都是可见的,所以B暂停后A直接执行onResume,不需要onRestart,也不需要onStart)
(8)activity异常退出的时候->onPause()->onSaveInstanceState()->onStop()->onDestory(),需要注意的是onSaveInstanceState()方法与onPause并没有严格的先后关系,有可能在onPause之前,也有可能在其后面调用,但会在onStop()方法之前调用
(9)异常退出后又重新启动该activity->onCreate()->onStart()->onRestoreInstanceState()->onResume()
3、Android进程优先级
(1)前台进程:与用户交互的activity
(2)可见进程:activity处于前台但不能与用户交互
(3)服务进程:在后台开启了一个service服务,这就是服务进程
(4)后台进程:activity在按home键后,就变成后台进程
(5)空进程:五个进程里面优先级是最低的,如果我们的进程不属于上面四个进程的进程那就是空进程,系统会随时杀死空进程
二、Android任务栈
1、任务栈的知识
Android是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也被称作返回栈(Back Task)。
栈是一种按“后进先出”原则进行插入和删除操作的数据结构。每当启动一个新的活动,它会在返回栈中入栈,并处于栈顶的位置,按下back键或调用finish方法销毁一个活动时,处于栈顶的活动会出栈,这时前一个入栈的活动就会重新处于栈顶的位置,系统总是会显示处于栈顶的活动给用户。
2、activity的启动模式
(1)默认的standard:每启动一个新的活动,它就会在返回栈中入栈,并处于栈顶的位置。该模式下系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例,重新走生命周期,非常耗内存。
例如:在FirstActivity的button的监听事件中,通过intent启动FirstActivity,然后在启动一个FirstActivity,当前的任务栈中就会有3个FirstActivity的实例,需要点3次返回键才能退出app
这里写图片描述
(2)singleTop:在启动活动时会判断该活动是否在栈顶,如果在栈顶就不会被创建,否则就会重新被创建。
这里写图片描述
(3)singleTask:每次启动该活动时系统首先会在任务栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把在这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例。
这里写图片描述
(4)singleInstance:会启用一个新的任务栈来管理这个活动
这里写图片描述
三、Scheme跳转协议
Android中的scheme是一种页面内跳转协议,通过定义自己的scheme协议,可以跳转到app中的各个页面:
应用场景:
(1)服务端下发一个url的路径,客户端根据url跳转到相应
界面
(2)从H5跳转到相应app界面
(3)APP根据url跳转到另一个app指定界面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值