android中的广播用的太多了,今天稍微总结一下。

按注册方式分为两种:


1.静态注册广播:

静态注册广播就是在androidManifest.xml文件中注册广播,假设我们要实现这样一个效果,在一个activity上点击按钮,发送一条广播,这条广播弹出一个toast,显示“静态”二字。


先看看广播接受者:

public class MyBroadcast extends BroadcastReceiver {

    @Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context,"静态", Toast.LENGTH_LONG).show();
} }

清单文件中注册:

        <receiver android:name="com.example.staticbroadcast.MyBroadcast" >
<intent-filter>
<action android:name="com.test.StaticBroadcast" />
</intent-filter>
</receiver>

activity中的点击事件(发送广播):

        this.static_btn.setOnClickListener(new OnClickListener() {

            @Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction("com.test.StaticBroadcast");
sendBroadcast(intent);
}
});

2.动态注册。

动态注册一般是在activity中的onStart()方法中注册,在onStop()方法中解除注册,代码如下:

public class MainActivity extends Activity {

    private Button static_btn;
private Button dynamic_btn;
private BroadcastReceiver myBroadcastReceiver; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); this.static_btn = (Button) this.findViewById(R.id.button1);
this.dynamic_btn = (Button) this.findViewById(R.id.Button01);
myBroadcastReceiver = new BroadcastReceiver(){ @Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(MainActivity.this,"你好,这里是动态广播!", Toast.LENGTH_LONG).show();
} }; // this.static_btn.setOnClickListener(new OnClickListener() {
//
// @Override
// public void onClick(View v) {
// Intent intent = new Intent();
// intent.setAction("com.test.StaticBroadcast");
// sendBroadcast(intent);
// }
// }); this.dynamic_btn.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
//发送广播
Intent intent = new Intent();
intent.setAction("DynamicBroadcast");
sendBroadcast(intent);
}
});
} @Override
protected void onStart() {
super.onStart();
//注册广播
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("DynamicBroadcast");
registerReceiver(myBroadcastReceiver, intentFilter); } @Override
protected void onStop() {
super.onStop();
//取消注册
unregisterReceiver(myBroadcastReceiver);
}
}

关于静态注册的细节:

android:exported=”true”这个属性表示该广播接收器是否接收来自其他App发出的广播,如果有intent-filter属性,则默认为true,否则默认为false。


每个广播接收者都可以接受多个广播源,如果是静态注册,那么你要这么做:

        <receiver
android:exported="true"
android:name="com.example.staticbroadcast.MyBroadcast" >
<intent-filter>
<action android:name="com.test.StaticBroadcast" />
<action android:name="com.test.StaticBroadcast2"/>
</intent-filter>
</receiver>

在广播接收器中这样处理:

    @Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("com.test.StaticBroadcast")) {
Toast.makeText(context, "静态", Toast.LENGTH_SHORT).show();
} else if (intent.getAction().equals("com.test.StaticBroadcast2")) {
Toast.makeText(context, "静态2", Toast.LENGTH_SHORT).show();
}
}

如果是动态注册,注册方式如下:

    @Override
protected void onStart() {
super.onStart();
//注册广播
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("DynamicBroadcast");
intentFilter.addAction("DynamicBroadcast2");
registerReceiver(myBroadcastReceiver, intentFilter); }

广播接收器中的处理方式与静态注册一致。


关于怎样使用broadcast实现activity和fragment之间的通信可以查看我的另一篇博客使用Broadcast实现android组件之间的通信

本文参考了:http://www.cnblogs.com/lwbqqyumidi/p/4168017.html

版权声明:本文为博主原创文章,未经博主允许不得转载。若有错误地方,还望批评指正,不胜感激。

android开发之broadcast学习笔记 分类: android 学习笔记 2015-07-19 16:33 32人阅读 评论(0) 收藏的更多相关文章

  1. 总结分享十大iOS开发者最喜爱的库 分类: ios相关 app相关 2015-04-03 16:43 320人阅读 评论(0) 收藏

    该10大iOS开发者最喜爱的库由"iOS辅导团队"成员Marcelo Fabri组织投票选举而得,参与者包括开发者团队,iOS辅导团队以及行业嘉宾.每个团队都要根据以下规则选出五个 ...

  2. winform 跨窗体给控件传值 分类: WinForm 2014-08-02 16:33 195人阅读 评论(0) 收藏

    两个窗体 FormA,FormB; FormA窗体中有一文本框控件:TextBox; FormB窗体中有一变量:txtJSJ 目的:把变量赋值给文本框 实现: 设置TextBox属性: Modifie ...

  3. 苹果应用商店AppStore审核中文指南 分类: ios相关 app相关 2015-07-27 15:33 84人阅读 评论(0) 收藏

    目录 1. 条款与条件 2. 功能 3. 元数据.评级与排名 4. 位置 5. 推送通知 6. 游戏中心 7. 广告 8. 商标与商业外观 9. 媒体内容 10. 用户界面 11. 购买与货币 12. ...

  4. 【Nutch2.2.1基础教程之3】Nutch2.2.1配置文件 分类: H3_NUTCH 2014-08-18 16:33 1376人阅读 评论(0) 收藏

    nutch-site.xml 在nutch2.2.1中,有两份配置文件:nutch-default.xml与nutch-site.xml. 其中前者是nutch自带的默认属性,一般情况下不要修改. 如 ...

  5. 基于命令行编译打包phonegap for android应用 分类: Android Phonegap 2015-05-10 10:33 73人阅读 评论(0) 收藏

    也许你习惯了使用Eclipse编译和打包Android应用.不过,对于使用html5+js开发的phonegap应用,本文建议你抛弃Eclipse,改为使用命令行模式,绝对的快速和方便. 一直以来,E ...

  6. Mahout快速入门教程 分类: B10_计算机基础 2015-03-07 16:20 508人阅读 评论(0) 收藏

    Mahout 是一个很强大的数据挖掘工具,是一个分布式机器学习算法的集合,包括:被称为Taste的分布式协同过滤的实现.分类.聚类等.Mahout最大的优点就是基于hadoop实现,把很多以前运行于单 ...

  7. AndroidManifest.xml中的application中的name属性 分类: android 学习笔记 2015-07-17 16:51 116人阅读 评论(0) 收藏

    被这个不起眼的属性折磨了一天,终于解决了. 由于项目需要,要合并两个android应用,于是拷代码,拷布局文件,拷values,所有的都搞定之后程序还是频频崩溃,一直没有找到原因,学android时间 ...

  8. ubuntu中安装samba 分类: linux 学习笔记 ubuntu 2015-07-07 16:14 46人阅读 评论(0) 收藏

    为了方便的和Windows之间进行交互,samba必不可少. 当然,他的安装使用也很简单: 安装: sudo apt-get install samba sudo apt-get install sm ...

  9. linux中的网络通信指令 分类: 学习笔记 linux ubuntu 2015-07-06 16:02 134人阅读 评论(0) 收藏

    1.write write命令通信是一对一的通信,即两个人之间的通信,如上图. 效果图 用法:write <用户名> 2.wall wall指令可将信息发送给每位同意接收公众信息的终端机用 ...

随机推荐

  1. 数据结构练习 00-自测4. Have Fun with Numbers (20)

    Notice that the number 123456789 is a 9-digit number consisting exactly the numbers from 1 to 9, wit ...

  2. PhoneGap + Dreamweaver 5.5 无法在模拟器中打开的问题(二)

    转载:http://blog.csdn.net/dupang/article/details/8248335 按照网上的教程搭建Dreamweaver CS5.5+PhoneGap移动开发环境,在进行 ...

  3. 你真的了解 MySQL 数据库的运行状况吗?

    2015年第三方市场调查机构 Evans 数据公司最近公布的一系列客户调查数据显示,在过去两年里,MySQL 在所有开发者使用的数据库中获得了25%的市场份额,Evans 公司的本次调查显示,数据库的 ...

  4. java.util.regex.Pattern的应用

    java.util.regex.Pattern 正则表达式的一种已编译的实现. 正则表达式通常以字符串的形式出现,它首先必须被编译为Pattern类的一个实例.结果模型可以用来生成一个Matcher, ...

  5. RemixOS Player 让用户在 Windows 上运行 Android App

    http://www.oschina.net/news/77154/remixos-player-windows-andriod-app

  6. lua中求table长度

    关于lua table介绍,看以前的文章http://www.cnblogs.com/youxin/p/3672467.html. 官方文档是这么描述#的: 取长度操作符写作一元操作 #. 字符串的长 ...

  7. 14.5.4 Phantom Rows 幻影行

    14.5.4 Phantom Rows 幻影行 所谓的幻读问题发生在一个事务 当相同的查询产生不同的结果集在不同的时间. 例如,如果一个SELECT 是执行2次,但是第2次返回的时间不第一次返回不同, ...

  8. TCP/IP TELNET & SSH

    快速导航 远程登录示例 关于远程登录? 嵌入? 用来控制远程服务器上运行的应用程序字符? 转义? 操作方式? 关于SSH? 远程登录示例 关于远程登录? 网络虚拟终端(Network Virtual ...

  9. 关于下拉刷新你是否真的非常理解还是只会搬砖?附 Android 实例子源代码文件下载地址380个合集

    1,推荐几篇非常有用的博文 原创写的真的非常好 主要讲解原理,整体布局三部分组成以及设置padding等等作用, 下拉的具体实现 滑动到底部具体加载以及判断手势事件,再次推荐作者的 详细讲解 建议先看 ...

  10. attitude

    刚看到一段挺有趣的游戏,分享一下. 如果 令 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 分别等于 1 2 3 4 5 6 7 8 9 10 ...