代朝恒的博客

一只刚起步的新手司机,记录android之路上的点点滴滴

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

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最后出栈。





































































阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Daisuki_ch/article/details/52372865
个人分类: android学习笔记
下一篇常用的使用FLAG的启动模式和横竖屏生命周期问题
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭