Intent
来源:互联网 发布:课堂直播软件 编辑:程序博客网 时间:2024/06/08 05:16
Intent在android中经常遇到,可以指定当前组件想要执行的动作,还可以传递数据,可以启动Activity,Service,Broadcast等。
- intent对象是传递给Context.startActivity() 或Activity.startActivityForResult() 以启动Activity或是让一个存在的Activity做些事情。(也可以传递给Activity.setResult()来返回Activity的信息,这个函数叫startActivityForResult()。)
- intent对象传递给函数来初始化一个service或是分发一个新的指令给一个正在进行的service。同样,intent传递给来建立一个在调用组件和目标service间的联系。如果一个service没有运行,它可以开始它。
- intent可以传递给任何广播函数(如:Context.sendBroadcast()、Context.sendOrderedBroadcast()、 Context.sendStickyBroadcast()),intent被分派给所有感兴趣的广播接收者。很多广播源在系统内核里。
Intent的调用可以分显式Intent和隐式Intent
- 显式Intent
Intent(Cintext packageContext,Class<?> cls) 两个参数分别为上下文和目标Activity
或者
传递参数Activity1
接收参数Activity2
传递参数Activity1并就收返回数据
接收参数Activity2,并返回数据
在Activity1中重写onActivityResult方法
- 隐式Intent
显式的Intent通过窗口类的类名确定窗口,隐式Intent则通过字符串来确定窗口,字符串是和具体窗口绑定的。
隐式Intent之前首先要认识下android的过滤机制intent-filter
其中包括Action,Category,Data,Flag
Manifest.xml中可以看到这样一组代码
- Action
Action就是用来和具体窗口进行绑定的一组字符串
通过这种方式可以可定具体的窗口。这就是隐式Intent。
android给出了许多隐式Intent的常量,比如电话,联系人,日历等Action的字符串常量,大家可以自行百度,当然也可以自定义。
ACTION_CALL activity 启动一个电话.
ACTION_EDIT activity 显示用户编辑的数据.
ACTION_MAIN activity 作为Task中第一个Activity启动
ACTION_SYNC activity 同步手机与数据服务器上的数据.
ACTION_BATTERY_LOW broadcast receiver 电池电量过低警告.
ACTION_HEADSET_PLUG broadcast receiver 插拔耳机警告
ACTION_SCREEN_ON broadcast receiver 屏幕变亮警告.
ACTION_TIMEZONE_CHANGED broadcast receiver 改变时区警告.
- Category
如果两个窗口的Action一样怎么办,当我们隐式的去确定具体窗口时,就会显示出一个选择列表,让我们选择。那么我们该怎样去精确地定位到我们要确定的窗口呢,这里就用到了Category,也是和窗口进行绑定的字符串。
我们可以通过addCategory()方法来设置Category。
每个Intent中只能指定一个action,但却能指定多个category;类别越多,动作越具体,意图越明确(类似于相亲时,给对方提了很多要求)。
- Data
分为两中方式
- URL
- MIME Type
就会播放音乐。
还有一个重要的Flag,它可以设置Activity的启动模式
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//SingleTask
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//SingleTop
Activity的启动模式,后面会整理
参考:http://www.cnblogs.com/engine1984/p/4146621.html
- intent
- Intent
- Intent
- Intent
- intent
- Intent
- intent
- Intent
- Intent
- Intent
- Intent
- Intent
- Intent
- intent
- Intent
- intent
- Intent
- intent
- MOOC清华《程序设计基础》第6章:三种递推方法求兔子数列问题(斐波那契数列)
- 关于4. 3 DESIGN: SPAM 审核问题的解决方法
- poj 2528 特殊离散化+线段树
- java中父类的私有属性能不能被继承
- linux fcitx
- Intent
- sizeForItemAtIndexPath
- 第二次面试
- HPU绝对值排序
- 并发实战——理解JVM中的Happens-Before规则(可见性,volatile)
- Android中 ScrollView(ListView)中嵌套ListView时显示不全的简便解决方案
- mysql与oracle数据库创建partition分区脚本
- 初识java
- 土壤含水量