关闭

Android中广播的简单使用

1158人阅读 评论(0) 收藏 举报
分类:
   Android中的广播机制: 我们知道Broadcast是Android中的四大组件之一,由此也能看出它的重要性,我们可以通过广播来接收到手机本系统发出的一些信息,比如:开机、锁屏、联网等状态。
   无序广播(Normal broadcasts):也称为普通广播 无序广播可以在同一时刻被所有广播接收者接收到,他的消息传递效率是比较高。但是他的缺点就是广播接收者不能将处理结果传递给下一个接收者,并且无法终止广播的继续传播。

  有序广播(Ordered broadcasts):
      通过priority来设置优先级(1~1000),数值越大优先级越高
      setResult()方法,将上一个广播接收器处理的结果向下一个接收器传递
           调用getResultExtras方法或者getData()方法获得上一个处理的结果
      如果需要在广播接收器之间进行传值操作或者取消有序广播的传递,就必须发送有序广播:  sendOrderedBroadcast()
         有序广播的应用就是从短信中直接提取短信验证码
      
      LocalBroadcastManager:只在当前应用中使用,不会将消息发送给系统
     从主界面跳转到第二个界面,当从第二个界面返回时,通过本地通知带回数据到主界面

        广播接收器需要注册,(只有注册后,才有能力接受广播)
               注册方式:a.动态注册--在代码中注册(不需要使用时,就解除注册)
                                 b.静态注册--在清单配置文件中注册(优点:应用程序退出后,依然可以接收广播)
       并且广播在动态注册后,只能通过隐式Intent来发送广播,不然广播接收者BroadcastReceiver是无法接收到广播的,但是静态注册方式就不会有限制,使用显式Intent还是隐式Intent发送广播都可以,但是一般情况下建议都使用隐式Intent来发送广播。
               步骤:
               静态注册:
                          a.在清单配置文件中添加注册信息:
<receiver android:name=".NextReciever">
<intent-filter>
<action android:name="com.mine.liu.demo05.ABC"/>
</intent-filter>
</receiver>
                         b.在任意Activity中点击发送广播--然后在清单配置文件中静态注册的应用就可以接收到广播
case R.id.btn_main:
//静态注册--reciever中要标明的是在接收到广播后会调用的类
//发送广播前,构建一个隐式意图
Intent intent1 = new Intent("com.mine.liu.demo05.ABC");
//发送广播
sendBroadcast(intent1);
break;
           动态注册:
                    a.在需要接收消息的Activity中注册广播接收器
//实例化广播接收器对象
reciever = new MyBroadcastReciever();
//构建一个IntentFilter--意图过滤器
IntentFilter filter = new IntentFilter();
//添加Action表明该广播接收器能接收什么类型的广播
filter.addAction("com.mine.liu.demo05.MSG");
//注册广播接收器
registerReceiver(reciever,filter);

//注册以后不再使用广播接收器时,需要解除注册
protected void onDestroy() {
super.onDestroy();
//解除注册
unregisterReceiver(reciever);
}
                b.创建一个类来继承BroadcastReceiver--用来在收到广播消息是调用,广播接收者
public class MyBroadcastReciever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//在收到广播消息时会调用的方法
String data = intent.getStringExtra("data");
Toast.makeText(context,data,Toast.LENGTH_LONG).show();


}
}
                           c.在其他的应用中通过发送广播,来进行显示广播的的操作
//发送广播前,构建一个隐式意图
Intent intent = new Intent("com.mine.liu.demo05.MSG");
intent.putExtra("data", "广播发送的消息");
//发送广播
sendBroadcast(intent);




1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:9126次
    • 积分:172
    • 等级:
    • 排名:千里之外
    • 原创:8篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类