Android学习之——广播接收器

本文深入讲解安卓四大组件之一的广播,包括静态注册和动态注册两种常用方法,详细介绍了如何在AndroidManifest.xml中注册广播,创建广播接收器,以及在代码中发送和接收广播的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

广播是安卓的四大组件之一,基本上学习安卓都要熟悉四大组件!

广播的注册最常用的大概就两种方法——静态注册和动态注册,静态注册可以常驻在程序中,即使程序关闭之后也能收到广播,从而进行对应的操作,而动态注册则在需要的时候调用,即它的生命周期只在activity存在的范围中,当activity销毁时它便消失了,所有动态注册的广播在onResume()方法中便要把它销毁掉,话不多少,开始写代码,我尽量用最简介的代码让大家看懂!

一、静态注册广播

首先,需要在AndroidManifest.xml文件中注册

然后创建一个广播接收器,继承MyBroadcastReceive,重写里面的onReceiver()方法

<receiver
       android:name=".util.MyBroadcastReceive"
       android:enabled="true"
       android:exported="true">
       <intent-filter>
            //自定义Action
            <action android:name="1" />
       </intent-filter>
</receiver>

android:action:类似于一个代码,是String类型,用于区分不同的广播

android:name:指的是当前广播所在的路径(包名+类名)

android:enabled:指的是当前的广播是否能被实例化,true为可以,false为不可以

android:exported:指的是当前的广播是否能被其他的程序调用

MyBroadcastReceive类代码:

public class MyBroadcastReceive extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {

        Log.e("LOG","broadcast ====="+intent.getAction());
        if ("1".equals(intent.getAction())) {

            MyHelper.showToast(context, "启动完成!");
        }
    }
}

在需要的地方进行广播注册,此处可以在baseActivity里面封装好发送广播的方法

​
 //封装发送广播的方法
    public void sendBroadcast(String action)
    {
        Intent intent = new Intent();
        intent.setAction(action);
        sendBroadcast(intent);
    }

​

然后在MainActivity中的onCreate()方法中进行调用

sendBroadcast("1");

启动程序,当前广播就已经被调了 

 

https://i-blog.csdnimg.cn/blog_migrate/8a1f3ff57f1bd0aaa33a990a1d7c0f40.jpeg

 

二、动态注册广播
 

动态注册的方法也很简单,代码如下

MyBroadcastReceive receive = new MyBroadcastReceive();
        IntentFilter filter = new IntentFilter(Constants.mian_broadcast);
        registerReceiver(receive,filter);
sendBroadcast(Constants.mian_broadcast);

然后在MyBroadcastReceive中进行调用就行了

 if ("1".equals(intent.getAction())) {

            MyHelper.showToast(context, "静态注册广播完成!");
        }else if(intent.getAction().equals(Constants.mian_broadcast)){
            MyHelper.showToast(context,"动态注册广播完成!");
        }

最后在onpause()方法中把广播pass掉

  @Override
    protected void onPause() {
        super.onPause();
        unregisterReceiver(receive);
    }

 

https://i-blog.csdnimg.cn/blog_migrate/f3549a10033b348f5900852fdbec1f31.jpeg

转载请标明出处:https://mp.youkuaiyun.com/postedit/86569733,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值