android 四大组件之 Activity

Activity
四大组件之一
每个界面就是一个Activity
创建Activity
1. 创建java类继承Activity类
2. 在清单文件中配置activity标签
Activity的跳转
显式启动
启动同一应用中的Activity:指定上下文和目标Activity的字节码
启动不同应用中的Activity:指定目标Activity所在的应用的包名和目标Activity的包名类名
隐式启动
设置intent中的action、data,在启动activity时,系统会在所有清单文件中寻找,是否有可以和该intent匹配的intent-filter,如果有,把该intent-filter所属的Activity启动起来
intent和intent-filter匹配:intent-filter中有什么标签,intent中都必须与其匹配
activity标签下可以定义多个intent-filter,只需匹配一个即可
        intent-filter中可以定义多个action或者data,只需匹配一个即可
mimetype只要有,就必须匹配
应用场景
启动同一应用的Activity,用显式
显式效率高于隐式,能用显式就用显式
启动不同应用的Activity,用隐式

如果有多个Activity的intent-filter和该隐式intent匹配,会弹出对话框供用户选择

Activity跳转时携带数据

数据直接封装在intent中传递

先把数据封装在Bundle中,在把Bundle对象封装在intent中传递

 intent和bundle能封装的数据类型

八大基本数据类型及其数组
字符串及其数组
实现了序列化接口的对象
Parcelable:Android提供的
Serializable:java提供的
在内存中传递对象,使用Parcelable效率比较高
持久化保存对象以及网络传递使用Serializable
Activity的生命周期
onCreate:Activity创建了
onStart:Activity可见了,但是此时还没有焦点
onResume:Activity可见,并且有焦点,此时Activity就是一个前台Activity
onPause:Activity依然可见,但是已经失去焦点了
onStop:Activity已经不可见了
onDestroy:Activity被销毁了
进程进入后台,在系统内存不足时,可能会杀死某些进程,按照LRU算法(最近最少使用)选择杀死的目标
Activity的启动模式
Activity task stack:任务栈
保存启动的Activity实例的引用
后进先出
四种模式
标准:默认的模式
singleTop:如果该Activity的实例已经在栈顶了,就不能再启动了,如果不在栈顶,那么可以再次启动
singleTask:如果栈中没有该Activity的实例,那么可以创建,如果已经有了,那么再也无法创建该ACtivity的实例了,每次跳转至该Activity,实际上是返回至该Activity,就是说杀死该Activity上方的所有Activity实例,让该Activity成为栈顶Activity
保证栈中只有一个该Activity的实例
singleInstance:如果没有该Activity的实例,那么启动该Activity时,会在一个独立的任务栈中创建该Activity的实例,然后如果该Activity已经被创建了,那么再也不会创建了,每次跳转至该Activity,都是把该Activity所在的栈提至前台显示
保证整个系统的内存中都只有一个该Activity的实例
Activity横竖屏切换
Activity在横竖屏切换时会重新调用生命周期方法
Activity销毁返回数据
ListView设置条目点击侦听,可以知道用户什么时候点击了哪一个条目
Activity启动有两种方式
返回数据会调用onActivityResult
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值