android studio中广播的动态注册与静态注册的区别以及演示代码

动态注册:主要是修改活动的代码来完成接收的操作。

静态注册:创建一个接收器,然后主要修改manifest.xml中的内容。

动态注册的方式十分的灵巧方便,但是动态注册必须是程序启动之后才可以接收广播,由于它写在了onCreate的方法当中,由此就引出的静态注册的方式,程序未启动的时候就可以接收相应的广播,这也就是他们之间的关键差别所在了。

动态注册的具体步骤:

1.定义一个Intent过滤器,用于寻找匹配的广播。

2.定义一个类,可以是内部类的方式,让他继承BroadcastReceiver,并复写其中的onReceive方法,写出自己的接收后的处理逻辑。

3.目的有了,处理动作有了,那么我们就将上两个参数传到registerReceiver当中就可以完成注册了。

4.完成注册后,当然还要有退出活动时的解注册,所以在onDestroy中写入解注册。

public class Main2Activity extends AppCompatActivity {
    private IntentFilter intentFilter;
    private  NetworkChangeReceiver networkChangeReceiver;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        intentFilter=new IntentFilter();
        intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");//定义过滤器
        networkChangeReceiver=new NetworkChangeReceiver();//定义处理逻辑的对象
        registerReceiver(networkChangeReceiver,intentFilter);//注册
    }
    //完成后的解注册
    protected void onDestroy()
    {
        super.onDestroy();
        unregisterReceiver(networkChangeReceiver);
    }
    //处理接收逻辑的内部类
    class NetworkChangeReceiver extends BroadcastReceiver
    {
        public void onReceive(Context context, Intent intent)
        {
            Toast.makeText(context,"default",Toast.LENGTH_SHORT).show();
        }
    }
}

静态注册的步骤:

1.在含有主活动的包中,右击,new,other,Broadcast Receiver,可以勾选的有exported:表示是否可以接收本程序以外的广播,Enabled:表示是否启用这个广播,我们把他们全都勾选上。

2.在这个接收器的onReceive方法中,写入接收后的处理动作。

public class MyReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context,"receive",Toast.LENGTH_SHORT).show();
        //利用提示信息的Toast提示receive
        throw new UnsupportedOperationException("Not yet implemented");
    }
}

3.在manifest中获取相应的权限。

你的操作需要什么权限就填写什么权限

4.在manifest中receiver中定义

<intent-filter
    />

用于指定接收什么样的广播类似于动态中的intentfilter的那一步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值