1min了解广播(3)-发送自定义广播
来源:互联网 发布:在线网页制作软件 编辑:程序博客网 时间:2024/04/29 02:12
今天我们一起来学习一下如何在应用程序中发生自定义的广播,前面已经介绍过了,广播主要分为两种类型,标准广播和有序广播,在本节中我们就将通过实践的方式来看下这两种广播具体的区别。
发送标准广播
在发送广播之前,我们还是需要先定义一个广播接收器来准备接收此广播才行,不然发出去也是白发。因此新建一个MyBroadcastReceiver 继承自BroadcastReceiver,代码如下所示:
import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.widget.Toast;/** * Created by 权兴权意 on 2016/9/27. */public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context,"Received in MyBroadcastReceiver",Toast.LENGTH_SHORT).show(); }}
这里当MyBroadcastReceiver 收到自定义的广播时,就会弹出Received in MyBroadcastReceiver的提示。然后在AndroidManifest.xml 中对这个广播接收器进行注册:
<receiver android:name=".MyBroadcastReceiver"> <intent-filter> <action android:name="com.quan.car.mybroadcast.MY_BROADCAST"/> </intent-filter> </receiver>
接下来修改activity_main.xml 中的代码,添加一个Button按钮作为发送广播的触发点,如下所示:
<Button android:id="@+id/mybr_btn_main" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="MyBroadcastReceiver" />
mybr_btn_main = (Button) findViewById(R.id.mybr_btn_main); mybr_btn_main.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { sendBroadcast(new Intent("com.quan.car.mybroadcast.MY_BROADCAST")); } });
可以看到,我们在按钮的点击事件里面加入了发送自定义广播的逻辑。首先构建出了一个Intent 对象,并把要发送的广播的值传入,然后调用了Context 的sendBroadcast()方法将广播发送出去,这样所有监听MY_BROADCAST 这条广播的广播接收器就会收到消息。此时发出去的广播就是一条标准广播。
运行程序点击Button即可看到效果:
广播是一种可以跨进程的通信方式,这一点从前面接收系统广播的时候就可以看出来了。因此在我们应用程序内发出的广播,其他的应用程序应该也是可以收到的。
发送有序广播
不过到目前为止,程序里发出的都还是标准广播,我们还可以尝试一下发送有序广播。
发送有序广播只需要改动一行代码, 即将sendBroadcast() 方法改成sendOrderedBroadcast()方法。sendOrderedBroadcast()方法接收两个参数,第一个参数仍然是Intent,第二个参数是一个与权限相关的字符串,这里传入null 就行了。
这个时候的广播接收器是有先后顺序的,而且前面的广播接收器还可以将广播截断,以阻止其继续传播。
那么该如何设定广播接收器的先后顺序呢?当然是在注册的时候进行设定的了,修改AndroidManifest.xml 中的代码,如下所示:
android:priority="100"
我们通过android:priority 属性给广播接收器设置了优先级,优先级比较高的广播接收器就可以先收到广播。
既然已经获得了接收广播的优先权,那么就可以选择是否允许广播继续传递了。如果在onReceive()方法中调用了abortBroadcast()方法,就表示将这条广播截断,后面的广播接收器将无法再接收到这条广播。
- 1min了解广播(3)-发送自定义广播
- 1min了解广播(1)动态注册
- Android广播之发送自定义广播+本地广播(二)
- 发送自定义广播
- android-发送自定义广播
- 发送自定义广播
- 发送自定义广播
- 发送自定义广播
- 发送自定义广播
- Android 发送自定义广播
- Android 发送自定义广播
- Android之广播三(发送自定义广播)
- 1min了解广播(2)-静态注册实现开机启动
- Android 发送系统广播与自定义广播
- 发送自定义广播 之 标准广播
- 发送自定义广播 之 有序广播
- 自定义 发送广播,并接受广播
- Android自定义发送无序广播
- [原]东方耀react native学习39-复杂的组件通讯三种方案
- Android 开源项目源码解析 -->ViewPagerindicator 源码解析(十)
- 第一周—*写名字
- BZOJ 3688 折线统计
- 在使用jquery的时候碰到的问题,以及跨域的问题
- 1min了解广播(3)-发送自定义广播
- GreenDao的使用
- ffmpeg commands
- iOS开发:第一个iOS程序分析——AppDelegate.h文件和视图View、视图控制器ViewController【转】
- my 2 c
- HTML5学习_day06(1)--html之定位的定义
- ffmpeg: 解析SDP
- Linux驱动的并发机制
- UMG 研究之Widget Switcher