首页 > 代码库 > android 学习教程六之----四大组件之一——BroadcastReciever
android 学习教程六之----四大组件之一——BroadcastReciever
博客好长时间没有更新了,做个基础总结,继续之前的,温故而知新!该系列为入门篇,大神可以绕道!
大家好,今天给大家详解一下Android中的BroadcastReceiver。在Android中,在Android中,Broadcast是一种广
泛运用的在应用程序之间传输信息的机制是一种广泛运用的在应用程序之间传输信息的机制,本质上是一种全局的监
听器,用于监听系统全局的广播消息。
BroadcastReceiver 有两种注册方式:一:静态注册方式 ;二:动态注册方式
一:静态注册方式就是在Anroidmanifest.xml中配置:
例子:
<receiver android:name="MyReceiver" >
<intent-filter>
<action android:name="android.intent.myfirstbroadcast" />
</intent-filter>
</receiver>
发送Activity 关键代码如下:
String actionName = "android.intent.myfirstbroadcast"; //定义一个Action
Intent broadcastIntent = new Intent(actionName);
sendBroadcast(broadcastIntent); //发送广播
接受消息广播类需要继承BroadcastReceiver如实例 MyReceiver:关键代码如下:
public class MyReceiver extends BroadcastReceiver{
public void onReceive(Context arg0, Intent arg1) {
// TODO Auto-generated method stub
Toast toast = Toast.makeText(context, "接受到的广播消为"+intent.getAction, Toast.LENGTH_SHORT);
toast.show();
}
二:动态注册方式:注册这样的事件由应用自己处理,通常是在onResume事件中通过registerReceiver进行注册,
在onPause等事件中通过unregisterReceiver取消注册。通过这样的注册方式使其能过在运行期间保持对事件的关注。
protected void onResume() {
super.onResume();
System.out.println("====onResume=====");
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.intent.myfirstbroadcast");
MyReceiver myfisrtreceiver =new MyReceiver();//定义receiver对象
registerReceiver(myfirstreceiver, intentFilter); //注册
}
protected void onPause() {
super.onPause();
System.out.println("====onPause====");
unregisterReceiver(myfistreceiver); //在onPause中反注册
}
对应广播消息接受类MyReceiver :
public MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast toast = Toast.makeText(context, "发送动态注册广播", Toast.LENGTH_SHORT);
toast.show();
}
};
两种注册方式已讲完,关于深入理解广播机制,请查看罗升阳的广播注册监听机制源码剖析,这里主要是入门讲解。
context 提供了两种方式用于发送广播:
sendBroadcast :用于发送正常的Broadcast
sendOrderedBroadcast :用于发送有序的Bradcast .
android 学习教程六之----四大组件之一——BroadcastReciever