BroadcastReceiver作为四大组件之一,觉得跟Activity最大的区别是不怎么跟用户交互,跟Service最大区别是可以广播,将信息发送给诸多用户。
BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的广播。
在Android系统中,广播体现在方方面面,例如当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能;当网络状态改变时系统会产生一条广播,接收到这条广播就能及时地做出提示和保存数据等操作;当电池电量改变时,系统会产生一条广播,接收到这条广播就能在电量低时告知用户及时保存进度,等等。
Android中的广播机制设计的非常出色,很多事情原本需要开发者亲自操作的,现在只需等待广播告知自己就可以了,大大减少了开发的工作量和开发周期。而作为应用开发者,就需要数练掌握Android系统提供的一个开发利器,那就是BroadcastReceiver。下面我们就对BroadcastReceiver逐一地分析和演练,了解和掌握它的各种功能和用法。
BroadcastReceiver的缺点:效率非常低,如果传递小信息还可以,如果是大规模信息的话就不能胜任了,否则会导致应用非常非常卡。
下面贴个小例子的代码:
静态注册
静态注册是在AndroidManifest.xml文件中配置的,置了以上信息之后,只要是android.intent.action.MY_BROADCAST这个地址的广播,MyReceiver都能够接收的到。注意,这种方式的注册是常驻型的,也就是说当应用关闭后,如果有广播信息传来,MyReceiver也会被系统调用而自动运行。
上面是个小例子,补充一下普通广播跟有序广播的区别:
上面的例子就是普通广播:普通广播对于多个接收者来说是完全异步的,通常每个接收者都无需等待即可以接收到广播,接收者相互之间不会有影响。对于这种广播,接收者无法终止广播,即无法阻止其他接收者的接收动作。
有序广播:
有序广播比较特殊,它每次只发送到优先级较高的接收者那里,然后由优先级高的接受者再传播到优先级低的接收者那里,优先级高的接收者有能力终止这个广播。
现在这三个接收者的<intent-filter>多了一个android:priority属性,并且依次减小。这个属性的范围在-1000到1000,数值越大,优先级越高。
BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的广播。
在Android系统中,广播体现在方方面面,例如当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能;当网络状态改变时系统会产生一条广播,接收到这条广播就能及时地做出提示和保存数据等操作;当电池电量改变时,系统会产生一条广播,接收到这条广播就能在电量低时告知用户及时保存进度,等等。
Android中的广播机制设计的非常出色,很多事情原本需要开发者亲自操作的,现在只需等待广播告知自己就可以了,大大减少了开发的工作量和开发周期。而作为应用开发者,就需要数练掌握Android系统提供的一个开发利器,那就是BroadcastReceiver。下面我们就对BroadcastReceiver逐一地分析和演练,了解和掌握它的各种功能和用法。
BroadcastReceiver的缺点:效率非常低,如果传递小信息还可以,如果是大规模信息的话就不能胜任了,否则会导致应用非常非常卡。
下面贴个小例子的代码:
import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class MyBR extends BroadcastReceiver{ public static final String Action = "com.example.l303boardcast.intent.action.MyBR"; @Override public void onReceive(Context arg0, Intent arg1) { System.out.println("BroadcastReceiver:value="+arg1.getStringExtra("txt")); } }
静态注册
静态注册是在AndroidManifest.xml文件中配置的,置了以上信息之后,只要是android.intent.action.MY_BROADCAST这个地址的广播,MyReceiver都能够接收的到。注意,这种方式的注册是常驻型的,也就是说当应用关闭后,如果有广播信息传来,MyReceiver也会被系统调用而自动运行。
<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.l303boardcast.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name="MyBR"></receiver> </application>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" > <Button android:id="@+id/but1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="发广播" /> <Button android:id="@+id/but2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="绑定广播" /> <Button android:id="@+id/but3" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="解除广播 " /> </LinearLayout> [size=large][color=green]动态注册[/color] 动态注册需要在代码中动态的指定广播地址并注册,通常我们是在Activity或Service注册一个广播,下面我们就来看一下注册的代码:(绑定广播触发动态注册的事件)[/size]
import android.app.Activity; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; public class MainActivity extends Activity implements OnClickListener{ private MyBR mybr = new MyBR(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.but1).setOnClickListener(this); findViewById(R.id.but2).setOnClickListener(this); findViewById(R.id.but3).setOnClickListener(this); } @Override public void onClick(View arg0) { switch (arg0.getId()) { case R.id.but1: Intent intent = new Intent(MyBR.Action); intent.putExtra("txt", "吊炸天"); sendBroadcast(intent); break; case R.id.but2: registerReceiver(mybr, new IntentFilter(MyBR.Action)); break; case R.id.but3: unregisterReceiver(mybr); break; default: break; } } }
上面是个小例子,补充一下普通广播跟有序广播的区别:
上面的例子就是普通广播:普通广播对于多个接收者来说是完全异步的,通常每个接收者都无需等待即可以接收到广播,接收者相互之间不会有影响。对于这种广播,接收者无法终止广播,即无法阻止其他接收者的接收动作。
有序广播:
有序广播比较特殊,它每次只发送到优先级较高的接收者那里,然后由优先级高的接受者再传播到优先级低的接收者那里,优先级高的接收者有能力终止这个广播。
现在这三个接收者的<intent-filter>多了一个android:priority属性,并且依次减小。这个属性的范围在-1000到1000,数值越大,优先级越高。
<intent-filter android:priority="998"> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>
发表评论
-
2048源码(核心算法有,缺少几个anctionbar,以后补上)
2014-09-25 13:22 15402048游戏基本上有四部分组成, 1:主activity,包含 ... -
android动画效果
2014-09-24 18:06 1150前几天弄alertdialog和popupwindow的时候, ... -
AlertDialog和PopupWindow
2014-09-18 15:44 1903区别:AlertDialog是非阻塞式对话框:AlertDia ... -
基础篇--resources资源
2014-09-12 15:18 544最近一直在做java开发,偶尔敲点android代码,突然发现 ... -
多点触摸(图片缩放为例)
2014-09-01 17:22 663多点触摸的事件跟单点是大同小异的,上个图片缩放的代码,供大家参 ... -
Toast的多种样式(附带Notification)
2014-09-01 13:48 948Toast以前用的时候一直以为只有文字提示,偶然得知也有多种样 ... -
Android Adapter详解(2)
2014-08-15 14:05 10以前Adapter一直用的不是太好,经过长时间的浸淫,现在可以 ... -
关于Android的Service
2014-08-14 13:57 466说起来真是羞愧,以前手机经常开机的时候,不会有任何QQ消息通知 ... -
在开发过程中易出的错误
2014-08-13 16:53 4361:如果继承ListActivity,那么layout中必须有 ... -
多媒体的浅尝辄止
2014-08-12 15:57 540下面简单讲几种Android的多媒体技术,音频,视频,摄像头, ... -
Sqlite无脑使用
2014-08-11 14:56 892不会sqlite的人再也不用愁了,无脑使用,只要会粘贴复制就O ... -
android弹出框
2014-08-11 11:23 521不得不说,android自带的弹出框真心丑,而且还不好用,接下 ... -
android几种数据存储方式
2014-08-11 10:45 715android数据存储方式 1:SharedPreferen ... -
SQLiteOpenHelper和ContentProvider区别
2014-08-06 15:08 1444Android中操作数据库主要有两种方法:使用SQLiteOp ... -
xml文件解析SAX
2014-08-05 13:45 508xml文件解析:xml文件解析有四种方式, 1.DOM生成和解 ... -
Android不常用代码(1)
2014-07-31 18:07 549目录 1:Webview 2:js交互 1:Web ... -
系统窗口的调用
2014-07-31 15:46 476直接上代码吧,intent进行调用 @Override ... -
fragment简单实用及数据传递(2)
2014-07-31 15:13 2555FragmentTransaction 进行数据传递 imp ... -
ActionBar简介
2014-07-31 10:47 716Action bar是一个标识应用程序和用户位置的窗口功能,并 ... -
fragment简单实用及数据传递(1)
2014-07-30 16:29 743Fragment的使用相关 使用Fragment时,需要继承 ...
相关推荐
所以,`BroadcastReceiver` 的生命周期非常短暂,必须高效地处理接收到的广播事件。 在 Android 系统中,`BroadcastReceiver` 是一个关键组件,它允许应用程序对外部事件进行响应,比如系统级别的事件(如电池状态...
### BroadcastReceiver详细介绍 #### 一、概述 在Android开发中,`BroadcastReceiver`是四大组件之一,主要用于接收并处理系统或应用程序发出的广播消息。通过这种方式,应用之间可以进行简单的通信和交互,使得...
1. BroadcastReceiver简介 BroadcastReceiver,即广播接收者,主要负责监听和处理系统级别的广播事件。在Android系统中,广播是一种无须直接交互就能传递信息的方式,它可以被用来通知所有感兴趣的应用程序关于特定...
第10章 Receiver 373 10.1 Service简介 374 10.1.1 创建、配置Service 374 ... 10.8.1 BroadcastReceiver简介 413 10.8.2 发送广播 414 10.8.3 有序广播 416 10.9 接收系统广播消息 424
#### 一、BroadcastReceiver简介 在Android开发中,四大核心组件包括:Activity、Service、BroadcastReceiver以及Content Provider。其中,BroadcastReceiver是一种特殊的组件,它主要用于接收并响应来自系统或其他...
一、BroadcastReceiver简介 BroadcastReceiver是Android系统中用于接收广播Intent的组件,它可以在后台运行,不需用户交互,当系统发出特定的广播时,BroadcastReceiver会自动触发。BroadcastReceiver有两种注册方式...
BroadcastReceiver简介** - **定义**:BroadcastReceiver也是Android四大组件之一,用于接收来自系统或其他应用的广播消息。 - **应用场景**:例如接收网络状态改变、电池电量变化等广播。 **3. Android Manifest...
- **知识点7:BroadcastReceiver简介** BroadcastReceiver也是Android四大组件之一,主要用于接收来自系统或其他应用程序的广播事件,例如网络连接变化、电池电量低等。 - **知识点8:注册BroadcastReceiver** ...
- **2.2.4 BroadcastReceiver简介**:介绍BroadcastReceiver的作用及其实现方式。 - **2.2.5 ContentProvider简介**:说明ContentProvider的作用以及如何实现数据共享。 - **2.2.6 Intent和IntentFilter简介**:...
10.8.1 BroadcastReceiver简介 413 10.8.2 发送广播 414 10.8.3 有序广播 416 10.9 接收系统广播消息 424 10.10 本章小结 427 第11章 多媒体应用开发 428 11.1 音频和视频的播放 429 11.1.1 使用...
- **BroadcastReceiver简介**:`BroadcastReceiver`用于接收系统或其他应用程序广播的消息,通常用于监听系统状态变化(如网络状态改变、电量不足等)或者应用程序之间的简单通信。 - **注册方式**: - 静态注册:...
### 01 Broadcast简介 **普通广播** 是BroadcastReceiver的基本形式,通过`Context.sendBroadcast()`方法发送。这些广播是异步的,意味着它们同时传递给所有注册的接收者,而且执行速度非常快。然而,由于接收者的...
- **Boa简介**:Boa是一款轻量级的Web服务器软件,特别适合用于嵌入式系统。它支持CGI,具有源代码开放、性能高效的特点。 - **移植过程**:首先需要下载Boa的源代码,然后根据嵌入式系统的具体需求对其进行必要的...
Android 四大组件是构成Android应用程序的核心元素,它们分别是Activity、ContentProvider、Service和BroadcastReceiver。这些组件协同工作,构建起Android应用的完整功能体系。 1. **Activity(活动)** Activity...
Broadcast Receiver简介 Broadcast Receiver是Android的五大组件之一,使用频率也很高。 用于异步接收广播Intent,广播Intent的发送是通过调用Context.sendBroadcast()、广播接收者(BroadcastReceiver)用于异步接收...
Android 四大组件是开发Android应用的核心组成部分,包括Activity、ContentProvider、Service和BroadcastReceiver。这些组件协同工作,使得应用程序能够高效地与用户交互、管理数据、执行后台任务以及响应系统事件。...
Android 四大组件是构成Android应用的核心元素,包括Activity、ContentProvider、Service和BroadcastReceiver。它们各自承担着不同的职责,共同协作实现应用的功能。 1. Activity(活动) Activity是Android应用中...
一、Broadcast机制简介 Broadcast广播是Android系统中的一种全局通知机制,用于在整个系统中传播事件。当一个Broadcast被发送时,所有注册了与该Broadcast匹配的BroadcastReceiver(广播接收器)都会收到这个消息,...
1. **ADB简介** ADB是Android开发的核心部分,它提供了与Android设备交互的命令行接口。通过ADB,开发者可以安装应用、查看设备状态、执行shell命令以及发送各种类型的数据,包括广播。 2. **发送广播的命令格式**...