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. Uva_11762 Race to 1

    题目链接 题意: 给一个数n, 每次从小于等于n的素数里选一个P, 如果能被n整除, 那么就n就变成n / P. 问: n 变成1的期望. 思路: 设小于等于n的素数有p 个, 其中是n的约数的有g个 ...

  2. struts2 拦截器1

    action invoke前会调用,invoke后会调用 public class FirstInterceptor extends AbstractInterceptor{ @Override pu ...

  3. 使用spm build 批量打包压缩seajs 代码

    一,安装环境 1.安装spm spm工具是基于node(nodejs的服务平台)的,因此我们需要先安装 node 和 npm 下载地址:http://nodejs.org/#download.下载完成 ...

  4. NEURAL NETWORKS, PART 3: THE NETWORK

    NEURAL NETWORKS, PART 3: THE NETWORK We have learned about individual neurons in the previous sectio ...

  5. PHP 之 Laravel 框架安装及相关开源软件

    Laravel 被称为简洁.优雅的PHP开发框架,但第一次接触此框架的人有不少都卡在了安装上,其实在 Linux 下只需要很简单的几步就可以搞定,这里我们以 CentOS 下 PHP + Nginx ...

  6. vim配置vimrc详解(转)

    vimrc的存放位置: 系统 vimrc 文件: "$VIM/vimrc" 用户 vimrc 文件: "$HOME/.vimrc" 用户 exrc 文件: &q ...

  7. 使用 ext3grep 恢复数据试验成功 笔记

    使用 ext3grep 恢复数据试验成功 笔记   来源:  Linux论坛 日期: 2009.07.07 10:03 (共有条评论)  我要评论   [Copy to clipboard] [ - ...

  8. bzoj1912

    由于k只有2,所以我们分类讨论显然当k=1时,我们只要连一条最长的路径即可就是树的直径L少走了L-1条边如果k=2时,我们再次连边成环后如果成环路径与上一次的最长路径没有相同的边,那少走的边数是路径长 ...

  9. bzoj1306

    非常好的一道搜索题首先没有别的好办法就只能搜,基于对称性我只要搜对角线上半部分即可然后有些惯用的剪枝啦什么的,具体见程序然后代码很短,然后TLE了(但好像也有人过了)然后就不知道怎么优化了,看到CLJ ...

  10. 依据 smtp协议的简单golang 的发邮件实现

    依据 smtp协议的简单golang 的发邮件实现 协议格式如下 From:sender_user@demo.net To:to_user@demo.net Subject:这是主题 Mime-Ver ...