Android安卓组件——Broadcast.

本文详细介绍了Android中的广播系统,包括标准广播与有序广播的区别,动态和静态注册BroadcastReceiver的方法,以及Broadcast的替代方案LiveData。特别提到动态注册需注意在onCreate()中进行,且避免在onReceive()中执行耗时操作。
摘要由CSDN通过智能技术生成

广播分为两种,标准广播和有序广播

1.标准广播

广播发出后所有接受器会在同一时间接收到这条广播的消息,无先后顺序。无法被截断。

2.有序广播

广播发出后,同一时间只有一个接收器可以接收到消息,有序,且可以被前面接受器的广播拦截。

广播监听器

(1)动态注册——代码中注册。

需要注意的是 动态注册广播监听器有一个缺点,注册逻辑写在onCreate()中,即只能在app启动后才可以接收到广播。

第一步、创建一个MyBrodestReciver广播接受器

  public class MyBrodestReciver extends BroadcastReceiver{
        @Override
        public void onReceive(Context context, Intent intent) {
            //判断action是否为添加的action,如果是则toast
            String action = intent.getAction();
            if(action.equals("one")){
                Toast.makeText(context,"发送了一个广播",Toast.LENGTH_LONG).show();
            }
        }
    }

第二步、添加一个action

//第二步.添加一个action
        //新建intentFilter对象 通过addAction添加广播
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction("one");

第三步、注册广播

//第三步.注册广播
        MyBrodestReciver myBrodestReciver = new MyBrodestReciver();
        registerReceiver(myBrodestReciver,intentFilter);

第四步、发送广播

   //使用点击事件发送一个广播
        Button send = findViewById(R.id.button);
        send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent();
                intent.setAction("one");
                sendBroadcast(intent);
            }
        });
(2)静态注册——AndroidManifest中注册。

新建一个BroadCastReceiver

右击包名->new->other->BroadCastReceiver

会在Mainifiest中自动添加广播代码。

Exported:是否允许接收到本程序以外的广播;

Enable:是否启用广播接受器

在Mainifiest中添加需要获取的权限。

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
//接收系统开机广播

 

需要注意的是 onReceive()方法中不可以添加过多的逻辑或进行耗时操作。

  • Broadcast——本地广播

已被废弃,替换为LiveData

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shanhe_yuchuan

如果对你有用的话,那真是太好了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值