Android常用组件Broadcast介绍

一、Broadcast简介

Broadcast是Android的四大组件之一。可分为:

1、普通广播  发送一个广播,所有监听该广播的广播接收者都可以监听到改广播。

2、异步广播  当处理完之后的Intent,依然存在,这时候registerReceiver(BroadcastReceiver,IntentFilter) 还能收到他的值,直到你把它去掉,不能将处理结果传给下一个接收者,无法终止广播。

3、有序广播  按照接收者的优先级顺序接收广播,优先级别在intent-filter中的priority中声明,-1000到1000之间,值越大,优先级越高.可以终止广播意图的继续传播.接收者可以篡改内容.

二、广播Broadcast实现过程

1、注册

a、配置文件注册

1 <!-- 注册自定义静态广播接收器 -->
2 <receiver android:name="com.example.androidtest.broadcast.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、接收类的实现

继承BroadcastReceiver并重写onReceive方法。

1 public 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 }

三、若内部类作为广播接收类如何实现

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

时间: 2025-01-18 05:30:20

Android常用组件Broadcast介绍的相关文章

Android常用组件

UI相关 图片 Android-Universal-Image-Loader:com.nostra13.universalimageloader:异步加载.缓存.显示图片 ImageLoader:com.novoda.imageloader:异步加载.缓存.显示图片 picasso:com.squareup.picasso:功能强大的图片下载缓存库 PhotoView:uk\co\senab\photoview:支持缩放和各种手势的ImageView ListView JazzyListView

Android四大组件的介绍

一.Android四大组件详解 Android四大组件分别是:activity,service,content provider,broadcast receiver. 1.activity: 1).一个应用程序一般由多个activity组成. 2).任务栈(task stack)(别名(back stack)后退栈),记录存放用户开启的activity. 3).一个应用程序被开启之后,系统就会分配一个任务栈,当所有activity都退出时,任务栈清空. 4).任务栈的id是integer型的,

Android新组件RecyclerView介绍,其效率更好

今天我们首先来说为什么要介绍这个新组件RecyclerView,因为前几天我发布了一个常用面试题ListView的复用及如何优化的文章,介绍给一些开发者,但是我看到有关的反馈说:现在都不再用listview了,代替的是RecyclerView,确实是,但是用的毕竟是少数,所以可能很多人对于这个组件不是很了解,那么我们就来介绍一下吧! 1.什么是RecyclerView RecyclerView 是 android-support-v7-21 版本中新增的一个 Widgets,官方对于它的介绍则是

android常用组件之DatePicker和TimePicker

在android中,DatePicker组件和TimePicker组件分别是日期选择器和时间选择器. 该实例中,当点击日期选择器按钮后,弹出日期选择框,用户选择日期后andoid会将日期显示到TextView组件中:当点击时间选择器按钮后,弹出时间选择框,选择后在相应的TextView组件显示时间. 日期选择框和时间选择框在创建实例的过程中,构造方法的参数类似,以下分别介绍: 1.日期选择框创建实例如下 DatePickerDialog datePicker=new DatePickerDial

android常用http框架介绍

OkHttp是square自己实现的一个的一个http库,现在好像是已经被Google官方采用,最新的Android代码中干掉了HttpClient,使用OkHttp. Retrofit是一个封装比较好的,相对更面向开发者的rest请求库,它的底层网络请求可以使用不同的网络库来处理,比如OkHttp,HttpClient. AsyncHttp也是一个较高层的封装,底层使用的是HttpClient. 1.HttpURLConnection:在Android 2.2版本之前,HttpClient拥有

Android四大组件-Broadcast Receiver

http://www.jianshu.com/p/1013a366cc72 前言 基础知识. 1.Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播可以跨进程甚至跨App直接通信. 2.你的APP可以接收广播(如当电话呼入时,或者数据网络可用时)进行接收并做出响应. 3.广播接收器没有用户界面.然而,它们可以启动一个Activity或Service服务来响应它们收到的信息,或者用NotificationMa

android常用组件之RadioGroup

RadioGroup组件内部含有若干个RadioButton组件,每一个RadioButton对应一个选项,利用RadioGroup类似于做单选题. RadioGroup可以理解为存放RadioButton的容器,他将多个RadioButton组织起来,形成一个组,而用户在选择时只能是组内的某一个RadioButton,所以用户直接操作的对象是RadioButton组件. 以下实例是首先选择一个选项,按提交按钮,会弹出一个消息框提示选择信息. 首先是布局文件: <LinearLayout xml

android常用组件之ScrollView

ScrollView在android中可以实现滚动视图,手机屏幕大小有限,当显示的内容较多时,滚动视图就派上用场了. 该实例主要是通过布局文件生成视图,只是演示ScrollView的使用,没有考虑整体美观效果.总体来看,采用垂直布局,在垂直布局的第一行加入一个TextView组件:第二行是一个ScrollView,内部加入垂直布局:第三行再加入一个TextView组件. 在布局文件中使用ScrollView,一般是在ScrollView节点中加入布局方式,如下所示,ScrollView也可以作为

android常用组件之SeekBar

SeekBar组件是可以手动调整进度的拖动条,最常见的使用地方是听音乐或者看视频时,往前或者往后拖动进行定位,手机中的音量控制等. 该实例中,手动改变进度,在TextView组件中会显示相应进度百分比. 首先是布局文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools&quo