Android常用组件Broadcast介绍
一、Broadcast简介
Broadcast是Android的四大组件之一。可分为:
1、普通广播 发送一个广播,所有监听该广播的广播接收者都可以监听到改广播。
2、异步广播 当处理完之后的Intent,依然存在,这时候registerReceiver(BroadcastReceiver,IntentFilter) 还能收到他的值,直到你把它去掉,不能将处理结果传给下一个接收者,无法终止广播。
3、有序广播 按照接收者的优先级顺序接收广播,优先级别在intent-filter中的priority中声明,-1000到1000之间,值越大,优先级越高.可以终止广播意图的继续传播.接收者可以篡改内容.
二、广播Broadcast实现过程
1、注册
a、配置文件注册
<!-- 注册自定义静态广播接收器 -->
<receiver android:name="com.example.androidtest.broadcast.MyReceiver">
<intent-filter >
<action android:name="MyAction"/>
</intent-filter>
</receiver>
b、代码注册
MyReceiver myReceiver = new MyReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("MyAction");
registerReceiver(myReceiver,filter);
2、发送广播
Intent intent = new Intent();
intent.setAction("MyAction");
intent.putExtra("msg", "这是广播发送的消息");
sendBroadcast(intent);
3、接收类的实现
继承BroadcastReceiver并重写onReceive方法。
public class MyReceiver extends BroadcastReceiver
{
public void onReceive(Context context, Intent intent)
{
Toast.makeText(context, "广播消息是:" + intent.getStringExtra("msg"), Toast.LENGTH_SHORT).show();
} }
三、若内部类作为广播接收类如何实现
1、注册
a、配置文件注册
1 <!-- 注册自定义静态广播接收器 -->
2 <receiver android:name="com.example.androidtest.broadcast.BroadcastTest$MyReceiver"> <!-- 注意内部类写法:普通类$内部类 -->
3 <intent-filter >
4 <action android:name="MyAction"/>
5 </intent-filter>
6</receiver>
b、代码注册
1 MyReceiver myReceiver = new MyReceiver();
2 IntentFilter filter = new IntentFilter();
3 filter.addAction("MyAction");
4 registerReceiver(myReceiver,filter);
2、发送广播
1 Intent intent = new Intent();
2 intent.setAction("MyAction");
3 intent.putExtra("msg", "这是广播发送的消息");
4 sendBroadcast(intent);
3、接收类的实现
注意:若在配置文件中注册则该类必须声明为static,否则找不到,若在代码中注册可省略static修饰
1 public static class MyReceiver extends BroadcastReceiver
2 {
3 public void onReceive(Context context, Intent intent)
4 {
5 Toast.makeText(context, "广播消息是:" + intent.getStringExtra("msg"), Toast.LENGTH_SHORT).show();
6 }
7
8 }
四、用途
开机、锁屏、电量低……
五、注意
生命周期只有十秒左右,如果在 onReceive() 内做超过十秒内的事情,就会报错 。
每次广播到来时 , 会重新创建 BroadcastReceiver 对象 , 并且调用 onReceive() 方法 , 执行完以后 , 该对象即被销毁 . 当 onReceive() 方法在 10 秒内没有执行完毕, Android 会认为该程序无响应 . 所以在BroadcastReceiver 里不能做一些比较耗时的操作 , 否侧会弹出 ANR(Application NoResponse) 的对话框
部分内容取自:http://yangguangfu.iteye.com/blog/1063732
Android常用组件Broadcast介绍的更多相关文章
- Android常用组件【转】
UI相关 图片 Android-Universal-Image-Loader:com.nostra13.universalimageloader:异步加载.缓存.显示图片 ImageLoader:co ...
- Android常用组件
UI相关 图片 Android-Universal-Image-Loader:com.nostra13.universalimageloader:异步加载.缓存.显示图片 ImageLoader:co ...
- Android新组件RecyclerView介绍,其效率更好
今天我们首先来说为什么要介绍这个新组件RecyclerView,因为前几天我发布了一个常用面试题ListView的复用及如何优化的文章,介绍给一些开发者,但是我看到有关的反馈说:现在都不再用listv ...
- android 四大组件Broadcast Receiver
本文介绍Broadcast Receiver,包括几部分内容:Broadcast Receiver概述及实例.自定义Broadcast Receiver.Broadcast Receiver的实现细节 ...
- Android四大组件--Broadcast Receiver具体解释
本文主要讲述了: 一.BroadcastReceiver概述: 二.BroadcastReceiver事件分类 三.BroadcastReceiver事件的编程流程 四.两类BroadcastRece ...
- android常用http框架介绍
测试数据 1.HttpURLConnection:在Android 2.2版本之前,HttpClient拥有较少的bug,因此使用它是最好的选择.而在Android 2.3版本及以后,HttpURLC ...
- Android四大组件-Broadcast Receiver
http://www.jianshu.com/p/1013a366cc72 http://www.jianshu.com/p/ca3d87a4cdf3 前言 基础知识. 1.Android广播分为两个 ...
- Android 架构组件 Room 介绍及使用
关于Room Room是Google官方提供的数据库ORM框架,使用起来非常方便.Room在SQLite上提供了一个抽象层,以便在利用SQLite的全部功能的同时能更加流畅的访问数据库. Room中三 ...
- Android常用组件之AutoCompleteTextView
安卓组件中,凡是需要配置数据的组件,一般都是用Adapter配置. AutoCompleteTextView的使用方法与ListView类似,也是用setAdapter来设置数据. MultiAuto ...
随机推荐
- Dapper simplecrud的使用
为了方便Dapper操作可以使用Dapper的相关扩展dapper simplecrud. 1.首先点击管理NuGet
- VS2015预览版中的C#6.0 新功能(二)
VS2015预览版中的C#6.0 新功能(一) VS2015预览版中的C#6.0 新功能(三) 自动属性的增强 只读自动属性 以前自动属性必须同时提供setter和getter方法,因而只读属性只能通 ...
- php+mysql+pdo连接数据库
1.$pdo = new PDO("mysql:host=localhost;dbname=test","root","123456");/ ...
- TextView之二:常用属性
参考自<疯狂android讲义>2.3节 //TextView所呈现的文字 android:text="我爱Java" //文字颜色 android:textColor ...
- 二维码识别:Halcon与C++中多字节环境下的字节编码格式设置和转换
Halcon环境下可通过设置set_system(‘filename_encoding’, ‘utf8’),可以将二维码的识别结果解析出汉字. VS环境下则需要将utf8转换成gbk格式.代码如下: ...
- NOI十连测 第五测 T1
#include<cstdio> #include<cstring> #include<cmath> #include<iostream> #inclu ...
- 从QWidget继承的圆形进度条QRoundProgressBar,只有370行代码(别忘了有现成的QProgressDialog)
是学习绘制控件的绝佳例子: http://blog.csdn.net/liang19890820/article/details/51957568 https://sourceforge.net/pr ...
- C# 获取当前应用程序的绝对路径支持asp.net
Asp.net在类库中获取某文件的绝对路径.这个问题在初学的时候就经常碰到过,经常是查了忘,忘了查.浪费了大量的今天专门写个文章,以后到这里查.有时间顺便记得研究下这个东西. 在主程序目录就不说了 ...
- Arcgis api For silverlight 加载QQ地图
原文 http://www.cnblogs.com/thinkaspx/archive/2012/11/07/2759079.html //本篇博客仅在技术上探讨可行性 //如果要使用Q 地图,请 ...
- python list列表 方法总结
深入链表(most on lists) The list data type has some more methods. Here are all of the methods of list ob ...