Activity的启动模式以及Intent的七大属性

原创 2016年08月29日 22:02:09

一、Task以及back stack


Task(任务)  为了完成一个功能  多个Activity的集合,
当你的应用程序启动时 系统会自动创建Task用于管理Activity
Back stack:(回退栈)按照Activity启动顺序 后进先出



二、Activity的启动模式:


1,standard:默认模式  (拿来主义)   每次都会创建一个新的Activity(多次实例化)

               android:launchMode="standard"

2,singleTop(拒绝堆叠)

              android:launchMode="singleTop"

      1,没有这个Activity 直接创建
      2,如果有 并且在栈顶  直接拿来使用 调用onNewIntent(Intent intent)方法
      3,如果有  没有在栈顶  重新创建一个Activity实例

3,singleTask:(独立门户)

                android:launchMode="singleTask"
1,没有Activity直接创建
2,如果有 并且在栈顶  直接拿来使用  调用onNewIntent(Intent intent)方法
3,如果有  没有在栈顶  将在它上方的 Activity pop出去  自身有回到栈顶位置调用onNewIntent(Intent intent)方法

4,singleInstance (孤独寂寞)(这个用法不多  浪费空间)

               android:launchMode="singleInstance "

       系统会单独分配一个stack  不允许其他的Activity和他共享一个stack

三、Intent的七大属性

跳转:
1,显示意图跳转:知道往哪里跳转(ComponentName)
2,隐式意图跳转:不知道往哪里跳转  只要action一致就可以(action)

1,ComponentName:应用组件名称  根据组件名称可以进行显示跳转(知道往哪里跳转)

2,Action:动作

1,自定义

 <!-- 注册Activity   设置动作 :必须有意图过滤器-->
<activity android:name=".SecondActivity">
   <intent-filter >
<action android:name="包名.类名"/>唯一
<category android:name="android.intent.category.DEFAULT"/>
   </intent-filter>
</activity>

2,系统提供

Uri:资源定位符
Uri遵循的格式:scheme://host:port/path
scheme:http  file  content
host:IP
port:端口号
path:请求的路径


3,Category:(种类) 指明动作的环境 

android.intent.category.LAUNCHER:程序启动的 
android.intent.category.DEFAULT :系统默认的执行方法
        在清单文件中 有action  必然跟category 否则程序报错

4,Data:数据   描述action数据

5,Type:数据的类型

6,putExtra:通信数据的   intent.putExtra(key,value);

7,Flag:标记 (一般用于启动模式)

FLAG_ACTIVITY_SINGLE_TOP:和启动模式里的SingleTop一致
FLAG_ACTIVITY_CLEAR_TOP:和SingleTask相似 >如果当前Activity存在   不在栈顶 
首先将上方的Activity pop出 将自身的Activity销毁 重新创建一个Activity 在栈顶
        如果当前Activity存在   在栈顶  将将自身的Activity销毁 重新创建一个Activity 在栈顶
FLAG_ACTIVITY_NEW_TASK:
1,不在清单文件中设置 和默认启动模式是一致的
2,在清单文件中设置属性  
android:taskAffinity="aa.bb"          taskAffinity用于指定当前Activity(activity1)所关联的Task,
android:allowTaskReparenting="true"          allowTaskReparenting用于配置是否允许该activity可以更换从属task



版权声明:本文为博主原创文章,未经博主允许不得转载。

Activity启动模式及Intent的Flag属性对Intent传值的影响

前些时候在支援公司其它部门项目开发的时候,有同事问我:通过Intent在Activity之间进行数据传递,传递的Key和获取的Key都没错,为什么在目标Activity会获取不到传递过来的数据?在Ke...
  • u010933680
  • u010933680
  • 2016年08月27日 13:58
  • 3684

Activity的启动模式 和 Intent启动选项

启动模式允许开发者定义一个activity的新实例如何与当前的Task关联。可以定义使用俩种方法来定义。 如果Activity A开启Activity B, Activity B就可以在它的mani...
  • petib_wangwei
  • petib_wangwei
  • 2016年12月15日 16:32
  • 870

关于Intent的七大属性

原谅我愚昧,Intent七大属性这个概念我也是昨天才接触到,看了一下,都是一些常用的东西,就是没有总结过,那么今天就来简单总结一下。Intent七大属性是指Intent的ComponentName、A...
  • u012702547
  • u012702547
  • 2015年12月05日 11:21
  • 8677

android之Intent的七大属性

Intent用于封装程序的“调用意图”。两个Activity之间,可以把需要交换的数据,封装成Bundle对象,然后使用Intent对象,携带数据到另一个Activity中。实现两个Activity的...
  • kite30
  • kite30
  • 2016年06月17日 10:37
  • 1182

Activity的四种启动模式的介绍及其应用场景

应用场景: 1.singleTop适合接收通知启动的内容显示页面。例如,某个新闻客户端的新闻内容页面,如果收到10个新闻推送,每次都打开一个新闻内容页面是很烦人的。聊天的对话窗口, 2.sing...
  • JustinNick
  • JustinNick
  • 2016年09月13日 22:30
  • 2542

Activity启动模式 及 Intent Flags 与 栈 的关联分析

在学习Android的过程中,Intent是我们最常用Android用于进程内或进程间通信的机制,其底层的通信是以Binder机制实现的,在物理层则是通过共享内存的方式实现的。     Intent主...
  • vipzjyno1
  • vipzjyno1
  • 2014年05月10日 18:44
  • 34361

[Android开发]Activity的四种启动模式及其应用场景

启动模式(launchMode)在多个Activity跳转的过程中扮演着重要的角色,它可以决定是否生成新的Activity实例,是否重用已存在的Activity实例,是否和其他Activity实例公用...
  • CodeEmperor
  • CodeEmperor
  • 2016年01月08日 11:39
  • 15275

Android启动模式对activity的影响

转自http://blog.sina.com.cn/s/blog_77cb34170100xxpf.html 首先说明  intent的FLAG和activity在manifest文件中的定义也...
  • lizj1012
  • lizj1012
  • 2015年01月19日 16:34
  • 224

Activity的七大属性

Activity的七大属性包括:      ComponentName   Extra   Flags  Category   Action    Data   Type      1) Compon...
  • CSDN_OF_ZHAO
  • CSDN_OF_ZHAO
  • 2016年07月22日 13:24
  • 257

Activity的启动模式:launchMode和intentFlags

启动模式定义了一个新的activity实例与任务栈task的关系,
  • shekmun
  • shekmun
  • 2014年09月30日 15:18
  • 381
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Activity的启动模式以及Intent的七大属性
举报原因:
原因补充:

(最多只允许输入30个字)