参考《Professional Android 4 Development》

Local Broadcast Manager 简介

Local Broadcast Manager由Android Support Library引入,用于实现应用程序内部Broadcast的发送和处理。因为监听范围缩小了,所以Local Broadcast既比全局的Broadcast高效,又同时保护信息不被其他应用程序获取,提升了安全性。使用Local Broadcast Manager之前,首先要将Android Support Library引用到应用程序中。

PendingIntent简介

使用PendingIntent,其他应用程序可以在一段时间后代理此程序处理相应的Intent。

int requestCode = 0;
int flags = 0;
// Start an Activity
Intent startActivityIntent = new Intent(this, MyOtherActivity.class);
PendingIntent.getActivity(this, requestCode, startActivityIntent, flags);
// Start a Service
Intent startServiceIntent = new Intent(this, MyService.class);
PendingIntent.getService(this, requestCode, startServiceIntent , flags);
// Broadcast an Intent
Intent broadcastIntent = new Intent(NEW_LIFEFORM_DETECTED);
PendingIntent.getBroadcast(this, requestCode, broadcastIntent, flags);

使用Intent Filters

在Manifest文件中,将intent-filter标签添加到相应Activity或Service的Manifest Node中,即可创建一个Intent Filter,其中可以包括这些子标签:

  • Action
  • Category
    • ALTERNATIVE
    • SELECTED_ALTERNATIVE
    • BROWSABLE
    • DEFAULT
    • HOME
    • LAUNCHER
    • Data
<activity android:name=”.MyBlogViewerActivity”>
  <intent-filter>
    <action android:name=”android.intent.action.VIEW” />
    <category android:name=”android.intent.category.DEFAULT” />
    <category android:name=”android.intent.category.BROWSABLE” />
    <data android:scheme=”http” android:host=”blog.radioactiveyak.com”/>
  </intent-filter>
</activity>

Intent Filter的运作机制

1. Android将所有应用的Intent Filter汇总到一个列表中。

2. 将与Action或Category不匹配的Intent Filter从列表中删除。

  a) Action必须完全匹配

  b) 只有包含所有的Category的Filter才会被匹配

3. Intent中data URI的每个部门都将与Intent Filter的data标签进行匹配,只有每个部分都对应才能被匹配。若Intent Filter中没有data tag,则可以匹配任意Intent中的Data。

4. 如果某个Intent最终被多个Intent Filter截获,则将由用户选择处理方式。

获取应用程序截获的Action及其数据

在Intent Filter截获Intent后,可以使用这种方式获取Action及数据:

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent = getIntent();
String action = intent.getAction();
Uri data = intent.getData();
}

  

  

Android 4 学习(13):Local Broadcast Manager & Intent Filter的更多相关文章

  1. Android开发学习之浅谈显示Intent和隐式Intent

    Intent寻找目标组件的两种方式: 显式Intent:通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,一般是在相同的应用程序内部实现的. 隐式Intent:通过Intent ...

  2. Android开发学习之路--Broadcast Receiver之初体验

    学习了Activity组件后,这里再学习下另一个组件Broadcast Receiver组件.这里学习下自定义的Broadcast Receiver.通过按键自己发送广播,然后自己接收广播.新建MyB ...

  3. Android开发学习之路--Activity之Intent

    窗外再次飘起了小雪,还有1周就过年了,2016年即将到来,来年不知道自己将身处何处,船到桥头自然直吧.还是继续学习吧,上次学习了Activity,那么如果是两个Activity之间,怎么从一个Acti ...

  4. Android 4 学习(11):Intent简介

    参考<Professional Android 4 Development> Intents 本文主要从这几个方面介绍Intents: 使用Intents在Android程序内部或外部通信 ...

  5. 【Android 初学】13、Broadcast Receiver

    Broadcast Receiver Android广播机制包括三个基本要素:广播(Broadcast) - 用于发送广播.广播接收器(BroadcastReceiver) - 用于接收广播:意图内容 ...

  6. 我的Android 4 学习系列之Intent 和 Broadcast Reciever

    目录 Intent 简介 使用隐式和显式Intent启动Activity.子Acitivity和Service 使用Linkify 使用Broadcast Intent 广播事件 使用 Pending ...

  7. Android 4学习(2):概述 - AndroidManifes.xml

    Android应用程序包含下面这几个部分: 程序的前后台: Activities Services 存储: Content Providers 消息传递: Intents Broadcast Rece ...

  8. Android Studio 学习 - 基本控件的使用;Intent初学

    Android Studio学习第三天. 今天主要学习 1. RadioButton.CheckBox.RatingBar.SeekBar等基础控件的使用. 结合Delphi中相类似的控件,在这些基本 ...

  9. Android开发学习之Intent具体解释

    Intent简单介绍和具体解释:           Intent:协助应用间的交互与通信,Intent负责相应用中一次操作的动作.动作涉及的数据.附加数据进行描写叙述.               ...

随机推荐

  1. 数据库oracle(PGA+SGA分配机制)

    一.名词解释 (1)SGA:System Global Area是Oracle Instance的基本组成部分,在实例启动时分配;系统全局域SGA主要由三部分构成:共享池.数据缓冲区.日志缓冲区. ( ...

  2. 内存保护机制及绕过方案——通过覆盖SEH异常处理函数绕过/GS机制

    通过SEH链绕过GS保护机制 ⑴.  原理分析: i.异常处理结构(SEH)处理流程如下: SEH是基于线程的,每一个线程都有一个独立的SEH处理结果,在线程信息块中的第一个结构指向线程的异常列表,F ...

  3. git clone 时显示Filename too long的解决办法

    在git bash中,运行下列命令: git config --global core.longpaths true 就可以解决该问题. --global是该参数的使用范围,如果只想对本版本库设置该参 ...

  4. ElasticSearch安装及简单配置说明

      目录 1.      准备安装包... 1 2.      安装jdk7. 1 3.      安装ElasticSearch. 2 4.      安装maven. 3 5.      集成IK ...

  5. c#如何保存richtextbox的rtf格式

    C# codethis.rtbText.Rtf = @"{\rtf1\ansi\ansicpg936\deff0\deflang1033\deflangfe2052" + @&qu ...

  6. H5 项目问题总结

    //一.HTML页面结构 <meta name="viewport" content="width=device-width,initial-scale=1.0,m ...

  7. 《Drools7.0.0.Final规则引擎教程》第4章 4.2 auto-focus

    auto-focus 在agenda-group章节,我们知道想要让AgendaGroup下的规则被执行,需要在代码中显式的设置group获得焦点.而此属性可配合agenda-group使用,代替代码 ...

  8. SQL中合并两个表的JOIN语句

    SQL里有四种JOIN语句用于根据某条件合并两个表: (INNER) JOIN: 交集 LEFT (OUTER) JOIN: 左表数据全包括,右表对应的如果没有就是NULL RIGHT (OUTER) ...

  9. js实现把中文、英文标点转换

    所有英文符号转换成中文的符号 <SCRIPT LANGUAGE="JavaScript"> <!-- function meizz(str) { var tmp ...

  10. HihoCoder1621 : 超市规划(四边形DP优化)()

    超市规划 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi居住的城市的中轴线恰好是一条马路.沿着这条马路一共坐落有N个居民小区,其中第i个小区距离马路一端的距离是A ...