Android广播机制的基本使用
一提到广播我们第一感觉就会联想到小时候村里面的广播,安卓的广播机制也是类似于大喇叭。有发送广播的地方,也有接收广播的地方。但是具体怎么操作呢,我们来一步一步的看下去~
安卓的广播种类
- 系统发送的广播:具体有哪些可以看下这篇Blog
http://blog.sina.com.cn/s/blog_7dbac1250101mt5h.html - app发送的广播:这个是我们自定义的,需要在AndroidMainFest.xml文件中出册,在发送广播的时候也要用到
如何发送广播
- 使用意图Intent发送
1.创建好Intent发送对象,构造方法如下
//参数是需要发送的信息,一般是字符串
public static final String ACTION_INTENT_TEST = "com.tao.broadCastReceive";
Intent intent = new Intent(ACTION_INTENT_TEST);
```
2.使用Activity中的一个方法进行发送广播
+ 同步广播
同步广播可以几乎再一瞬间到达所有的广播接收站,程序对此无法控制,不能停止,不能阶段
```java
//此方法是Context中的方法,同步广播
sendBroadcast(intent);
- 有序广播
广播接收者需要提前设置优先级,优先级高的先接收到广播,优先级数值为-1000~1000,在AndroidManifest.xml的设置;
比如存在3个广播接收者A、B、C,优先级A>B>C,因此A最先收到广播,当A收到广播后,可以向广播中可以: - 添加一些数据给下一个接收者(intent.putExtra())
- 终止广播(abortBroadcast());
sendOrderedBroadcast(intent,null);
广播的接收
- 构建一个类,此类继承BroadcastReceiver,并实现onReceive方法,但是记住,onReceive的代码不宜过长。不适合执行长时间操作的代码,如I/O,网络请求,文件读取的等,否则会出现吧ANR(Application No Response),应当创建并启动一个Services并启动,再服务中执行操作(记住服务是工作在UI线程中的哦!!!)
public class Receiver extends BroadcastReceiver{
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
...
}
}
- 再AndroidMainFest.xml文件中注册广播
<receiver android:name=".Receiver">
<intent-filter android:priority="1000">
<action android:name="com.tao.broadCastReceive"/>
</intent-filter>
</receiver>
这样就完成一个广播的发送了,当然如果需要接收系统的广播,则可以在AndroidMainFest文件中进行设置Action属性,则就可以接收系统发出的广播信息。
实例代码
- MainActivity.java
public class MainActivity extends AppCompatActivity {
private Button sendBroadCastReceive;
private EditText titleContent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sendBroadCastReceive= (Button) findViewById(R.id.sendBroadCastReceive);
titleContent= (EditText) findViewById(R.id.titleContent);
sendBroadCastReceive.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent sendBroadCast=new Intent();
sendBroadCast.setAction("coom.tao.selfBroadCastReceive");
sendBroadCast.putExtra("title",titleContent.getText().toString().trim());
sendBroadcast(sendBroadCast);
}
});
}
}
- activity_main.xml 布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.tao.boedercast.MainActivity">
<EditText
android:id="@+id/titleContent"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginRight="20dp"
android:layout_marginLeft="20dp"
android:layout_marginBottom="10dp"
android:layout_above="@+id/sendBroadCastReceive"
android:hint="请输入发送的内容"
/>
<Button
android:id="@+id/sendBroadCastReceive"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="发送广播"
/>
</RelativeLayout>
预览
- 自定义接收BroadcastReceive
public class MyBroadCastReceive extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String titleContent=intent.getStringExtra("title");
Toast.makeText(context,titleContent,Toast.LENGTH_LONG).show();
}
}
- androidmainfest.xml文件注册
<receiver android:name=".MyBroadCastReceive">
<intent-filter android:priority="1000">
<action android:name="coom.tao.selfBroadCastReceive"></action>
</intent-filter>
</receiver>
一个简单的自定义广播完成了,欢迎大家指正批评,谢谢!
本博客内容一致同步到本人的简书博客:http://www.jianshu.com/p/c01397361ba0 欢迎访问留言交流
Android广播机制的基本使用的更多相关文章
- Android随笔之——Android广播机制Broadcast详解
在Android中,有一些操作完成以后,会发送广播,比如说发出一条短信,或打出一个电话,如果某个程序接收了这个广播,就会做相应的处理.这个广播跟我们传统意义中的电台广播有些相似之处.之所以叫做广播,就 ...
- Android广播机制的深入学习
部分内容转载自http://www.cnblogs.com/lwbqqyumidi/p/4168017.html 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者 ...
- Android总结篇系列:Android广播机制
1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通 ...
- Android广播机制概述
1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通 ...
- Android广播机制:Broadcast
转载:Android总结篇系列:Android广播机制 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广 ...
- Android(java)学习笔记172:BroadcastReceiver之 Android广播机制
Android广播机制 android系统中有各式各样的广播,各种广播在Android系统中运行,当"系统/应用"程序运行时便会向Android注册各种广播.Android接收到广 ...
- Android广播机制(转)
1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通 ...
- Android广播机制
原文出处: Android总结篇系列:Android广播机制 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的 ...
- Android(java)学习笔记115:BroadcastReceiver之 Android广播机制
Android广播机制 android系统中有各式各样的广播,各种广播在Android系统中运行,当"系统/应用"程序运行时便会向Android注册各种广播.Android接收到广 ...
- Android广播机制简介
为什么说Android中的广播机制更加灵活呢?这是因为Android中的每个应用程序都可以对自己感兴趣的广播进行注册,这样该程序就只会接收到自己所关心的广播内容,这些广播可能是来自于系统的,也可能是来 ...
随机推荐
- [译]ASP.NET Core中使用MediatR实现命令和中介者模式
作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9866068.html 在本文中,我将解释命令模式,以及如何利用基于命令模式的第三方库来实现它们,以及如何 ...
- java提高(2)---正则表达式(1)常用符号
正则表达式---常用符号 首先声明,我这里列表的是经常使用的一些符号,如果你想得到全部,那建议你通过API中,搜索Pattern类,会得到所有符号. 字符类 [abc] a.b 或 c(简单类) [^ ...
- AspNetCore微服务下的网关-Kong(一)
Kong是Mashape开源的高性能高可用API网关和API服务管理层.它基于OpenResty,进行API管理,并提供了插件实现API的AOP.Kong在Mashape 管理了超过15,000 个A ...
- MySQL导入导出实践
最近一次数据迁移,需要将MySQL的数据导出.处理后导入到新表和ES.这里做个简单记录,方便后续查询. 注: 为了写文章方便及隐私安全,实际内容会有所简化.例如表结构简化.数据库连接部分全部用 xxx ...
- python中执行该文件,就调用 mian 方法
代码: test.py import student def main(): st = student.student(1001, 'tommy', 18) st.sing() st.dance() ...
- 举个栗子看如何做MySQL 内核深度优化
本文由云+社区发表 作者介绍:简怀兵,腾讯云数据库高级工程师,负责腾讯云CDB内核及基础设施建设:先后供职于Thomson Reuters和YY等公司,PTimeDB作者,曾获一项发明专利:从事MyS ...
- git 下载部分目录
需求 github上整个工厂比较大,下起来费劲,如何只下载一个单独的文件件呢? 方法一 以:https://github.com/eugenp/tutorials为例,下载其中的 spring-kaf ...
- Tomcat他山之石.可以攻玉(一)Server组件
Server组件 Server组件作用: 采用观察者模式,又叫源-收听者的设计模式,提供了可以动态添加.删除的监听器,作用是在Server组件的不同生命周期中完成不同的功能.逻辑: Tomcat容器的 ...
- Linux常用命令汇总(一)
线程操作 1.ps ps -ef 查看当前活动进程 ps -ef | grep [线程关键信息] ps -ef | grep java 查看java相关进程 2.kill killall -9 jav ...
- C#异常处理。
一.什么是异常? 程序运行时发生的错误. 二.异常处理的一般代码模式. try{..可能发生异常的代码} catch{..对异常的处理} finally{...无论是否发生异常.是否捕获异常都会执行的 ...