BroadcastReceiver—普通广播

它是用来接收来自系统的和应用中的广播
如开机产生广播,网络发生广播, 如电池电量发生改变
广播的类型:
1:Normal broadcasts 默认广播
发送一个默认的广播 context.sendBradcast()方法,普通广播对于多个接收者来说完全异步的,
通常每个接收者都无需等待即可以接收广播,接收者互相之间不会有影响。对于这种广播,即无法终止广播
,即无法阻止其他接收者接收的动作
2:Order broadcasts 有序广播
使用:context.sendOrderBradcast() 有序广播比较特殊,它每次只发送到优先级较高的接收者那里
然后由高到低,高的可以阻止低的 短信拦截
在注册广播的时候可以使用优先级android:priority属性 这个属性的范围在 -1000到1000,
数值越大优先级越高
obortBradcast();停止传递
3:Sticky broadcasts 粘性广播 就是没开 虽然我播完 了 你也可以收到
当处理完intent之后,依然存在,直到你把它去掉

 静态注册:xml文件
 动态注册:代码中   代码注册会先接收到广播

启动一个普通的广播示例(启动按钮发送一个普通的广播):

//发送一个普通的广播
    public void sendBroad(View v){
        //intent里面定义“com.qq” 是中介,
        Intent intent=new Intent("com.qq.music");
        intent.putExtra("info", "接收中。。。");
        this.sendBroadcast(intent);
    }

新建一个广播接收者extends BroadcastReceiver 它里面intent也可以传递参数

public class MyBroadCast extends BroadcastReceiver{

    //接收
    @Override
    public void onReceive(Context arg0, Intent intent) {
        // TODO Auto-generated method stub
        String st = intent.getStringExtra("info");
        Toast.makeText(arg0, st, 1).show();
    }

}

在xml文件中注册广播(静态注册)

 <receiver 
            android:name="com.example.day0706mybroadcasereceiver.MyBroadCast"
            android:enabled="true"
            android:exported="true"
            >
            <!-- 和接收者action一致 -->
            <intent-filter >
                <action android:name="com.qq.music"/>
            </intent-filter>
        </receiver>

还有一种注册方式是通过代码动态注册(代码注册会优先比静态注册接收到广播) 启动就注册动态广播

@Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        //在该方法中进行广播注册
        //动态注册
       IntentFilter filter=new IntentFilter();
       filter.addAction("com.qq");
       registerReceiver(myBroadCast2, filter);
    }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        //再该方法中解除注册
        unregisterReceiver(myBroadCast2);
    }

    //和上面一样发送个广播
    public void sendBroad(View v){
        //intent里面定义中介
        Intent intent=new Intent("com.qq");
        intent.putExtra("info", "接收中。。。");
        this.sendBroadcast(intent);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值