Android广播BroadcastReceiver介绍

本地广播
1.发送的广播只能在本程序内传递,不必担心数据泄露
2.其它程序广播无法发送到本程序的内部,不必担心安全漏洞隐患
3.本地广播比系统全局广播更加高效
4.本地广播只能被动态注册,不能静态注册,动态注册或方法时需要用到LocalBroadcastManager

有序广播 https://www.cnblogs.com/lcy0515/p/10807870.html
是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够收到这条广播消息,当这个广播接收器中的逻辑执行完毕之后,广播才会继续传递。所以此时的广播接收器是有先后顺序的,优先级高的广播接收器就可以先接收到广播消息,并且前面的广播接收器还可以截断或者修改正在传递的广播,这样后面的广播无法接受到广播消息或者接收到不真实的广播消息。这种广播是全局性的,其他的应用程序都可以接受到。

sendOrderedBroadcast 来发送 android:priority 来区分先后顺序

<receiver android:name=".ProvinceReceiver">
    <intent-filter android:priority="1000">
        <action android:name="myfadami" />
    intent-filter>
receiver>
<receiver android:name=".CityReceiver">
    <intent-filter android:priority="500">
        <action android:name="myfadami" />
    intent-filter>
receiver>

粘性广播 https://my.oschina.net/ososchina/blog/347765
粘性广播在发送后就一直存在于系统的消息容器里面,等待对应的处理器去处理,如果暂时没有处理器处理这个消息则一直在消息容器里面处于等待状态,粘性广播的Receiver如果被销毁,那么下次重建时会自动接收到消息数据。
系统粘性广播一般用来确保重要的状态改变后的信息被持久保存,并且能随时广播给新的广播接收器,比如电源的改变,因为耗电需要一个过程,前一个过程必须提前得到,否则可能遇到下次刚好接收到的广播后系统自动关机了,随之而来的是kill行为,所以对某些未处理完的任务来说,后果很严重。

http://biandroid.iteye.com/blog/1608833

注册BroadcastReceiver registerReceiver(receiver,filter)
取消注册BroadcastReceiver unregisterReceiver(receiver)

<receiver android:name="SMSReceiver">
      <intent-filter>
       <action android:name="android.provider.Telephony.SMS_RECEIVED" />
      intent-filter>
receiver>
  public void registerBoradcastReceiver(){
        IntentFilter myIntentFilter = new IntentFilter();
        myIntentFilter.addAction(ACTION_NAME);

        registerReceiver(mBroadcastReceiver, myIntentFilter);
    }
private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver(){
          @Override
          public void onReceive(Context context, Intent intent) {
              String action = intent.getAction();
              if(action.equals(ACTION_NAME)){
                  Toast.makeText(Test.this, "处理action名字相对应的广播", 200);
              }
          }
      };
mBtn.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent mIntent = new Intent(ACTION_NAME);
            mIntent.putExtra("yaner", "发送广播,相当于在这里传送数据");

            sendBroadcast(mIntent);
        }
    });

Original: https://blog.csdn.net/daokedream/article/details/127824106
Author: Crazy程序猿2020
Title: Android广播BroadcastReceiver介绍

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/660119/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球