关闭

Intent的基本用法以及Activity的生命周期和启动模式

188人阅读 评论(0) 收藏 举报
分类:

Activity的两种跳转

1.显式跳转(3种写法)
定义一个意图
1>Intent intent=new Intent(上下文,跳转的activity.class);
或者 Intent intent=new Intent();
intent.setClass(上下文,跳转的activity.class);
2>Intent intent=new Intent();
intent.setClassName(上下文,包名.跳转的activity.class);
3>courpouentName(不常用)
开启startActivity(intent);(实现跳转)
2.隐式跳转
方法:AndroidManifest清单文件里给要跳转到activity添加意图过滤器
<intent-filter>
<action android:name=""/>//此处可以给一个自定义的名字
<category android:name=""/>//这里填写要以default结尾的
</intent-filter>
然后定义一个意图
Intent intent=new Intent();
intent.setAction(填写要跳转到的acitvity里的action定义的名字);
startActivity(intent);
带值跳转

1.使用意图.putExtra("a",b);--->这里ab类似map的键值对(传值)
跳转的页面使用getintent().get<类型>Extra(a);--->类型是传的值的类型,a是传值的对应的数据的键;(接收数据)
2.定义一个Bundle对象,给Bundle存数据--->Bundle(a,b)--->ab同map键值对
然后存入意图中
1>意图.putBundleExtra(bundle键,bundle对象)
2>意图.putExtras(bundle对象)
对应的接收数据
1>getintent().getBundleExtra(bundle键);
2>getintent().getExtras();

3.带值回传
A页面中:定义一个intent
给intent存值
使用startActivityForResult(intent,请求码);(理解为传值过去并给了一个请求码)
B页面中:定义一个intent
给intent存值
setResult(响应码,intent);

A页面中:重写onActivityResult方法
判断响应码和请求码相同时获得data数据实现互相传值目的


生命周期

一个activity的生命周期
创建的时候-->oncreate-->onstart-->onresume-->启动运行中
运行中-->onpause-->onstop-->onrestroy-->程序结束

两个activity的生命周期
A创建的时候-->oncreate-->onstart-->onresume-->运行中
跳转到B的时候-->A-->onpause-->B-->oncreate-->onstart-->onresume
-->A-->onstop
B返回的时候-->B-->onpause-->A-->onrestart-->onstart-->onresume
-->b-->onstop-->ondestroy
B跳转到A的时候-->B-->onpause-->A-->onrestart-->onstart-->onresume
-->b-->onstop
A被回收后B返回时候-->B-->onpause-->A--oncreate-->onstart-->onresume
-->b-->onstop-->onrestroy
一个全屏activity跳转到一个窗口型的activity的生命周期
A创建的时候-->oncreate-->onstart-->onresume-->运行中
跳转到B的时候-->A-->onpause-->B-->oncreate-->onstart-->onresume
B按返回时-->B-->onpause-->A-->onrestart-->onstart-->onresume
-->B-->onstop-->onstroy

每个阶段的状态
oncreate 不可见不可交互  onstop
onstart可见不可交互   onpause
onresume  可见可交互
onrestart   不可见-->可见

AndroidManiFast中的4种启动模式(launchMode)

standard默认启动模式
使用堆栈模式,首次启动activity时,会开辟一个栈存放activity,当activity互相跳转的时候回以此的往栈中堆叠存放,程序要整个退出需要按存放数量次才可以退出
singletop单一栈顶模式
如果栈顶存放的跟将要跳转的activity一致时,则不会重复的堆叠在栈顶了。
singletast单一任务模式
当将要跳转时,会再任务栈中查找是否有和将要跳转的activity一样的activity,如果有,则把该activity切换到栈顶,本来在存在的activity之上的activity都会出栈,如果没有,则堆叠在任务栈栈顶
singleinstance单例模式
简单的可以理解为,如果当前的activity是这个模式,按返回时这个activity最先出栈,如果这个模式的activity不是当前的activity,按返回时这个activity最后出栈。





































































0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:11144次
    • 积分:481
    • 等级:
    • 排名:千里之外
    • 原创:36篇
    • 转载:0篇
    • 译文:0篇
    • 评论:4条
    文章分类
    最新评论