android 广播个人总结

  1. 标准广播和有序广播
    标准广播大致是这样的流程,发送之后,所有的广播接收器同时接收到
    android 广播个人总结_第1张图片
    有序广播大致是这样,中间的一次接受广播,中间的接收器,接收之后,可以选择继续往下传播或者截断

    android 广播个人总结_第2张图片

    两者的编码区别在于:

    1.发送广播的时候 标准广播(sendBroadcast(intent)) 有序广播(sendOrderedBroadcast(intent,null))

    2.有序广播在intent-filter中可设置android:priority=”n” n越大优先级越大 别问我一样大会怎样,我没试过 捂脸

    3.有序广播可想传播链截断(abortBroadcast()),截断之后不可继续下传

  2. 广播接收器的静态注册和动态注册

    注册之前需要先创建一个接收器,也就是自定义一个;
    as里面,左键选中java文件夹,右键菜单里面的new–>other,里面可以直接创建接收器(Broadcast Receiver),完美生成一个广播接收器,当然你也可以自己新建个object,在extends BroadcastReceiver ,再添加onReceive()方法函数,当然,我感觉这样真的是很麻烦,但是如果你真的是基础不行的话,可以做两遍,浪浪

    静态注册就是在清单文件里注册,这个广播的生命周期是随着应用的启动和销毁而启动销毁的,

              <receiver
                android:name=".MyReceiver"
                android:enabled="true" //是否启用这个广播
                android:exported="true" //是否接受本程序之广播
              >receiver>

​ android:enabled=”true” //是否启用这个广播

​ android:exported=”true” //是否接受本程序之广播 一般来讲如果不是接受系统的广播,不需要暴露,否则可能导致安全的操作,被别人破解

可以添加intent-filter action类似之前activity的

<receiver
            android:name=".MyReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.hehehe" />
            intent-filter>
        receiver>

​ 广播先创建,再注册,做完之后我们就可以发送广播验证一下

Intent intent=new Intent("android.intent.action.hehehe");
sendBroadcast(intent);

动态注册 还是需要先创建 BroadcastReceiver ,假如是使用as自动创建的话,是会自动静态注册的,

android 广播个人总结_第3张图片

注意英文提示,add到manifest,假如是中文的话,我各个开发工具肯定提高我不少的开销效率,但是真的下汉化版的,反而会被广大同行,瞧不起,太 low,我也有这样的感觉,崇洋媚外啊,我也是

一般情况下都是在activity生命周期中注册,当然其他组件也可以,

public class MainActivity extends AppCompatActivity {
    private MyReceiver myReceiver;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myReceiver = new MyReceiver();
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction("android.intent.action.hehehe");
        registerReceiver(myReceiver, intentFilter);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(myReceiver);
    }
}

这就是动态注册,发送广播验证一下,ok

  1. 本地广播

    LocalBroadcastManager 本地广播,就和其他应用没关系了,他们都接受不到,也发送不过来

    具体的编码需要注意的地方也就是,编码的发送广播,注册广播,销毁广播的时候,使用LocalBroadcastManager调用

    android 广播个人总结_第4张图片

你可能感兴趣的:(Android)