android 广播个人总结

xiaoxiao2021-02-28  95

标准广播和有序广播 标准广播大致是这样的流程,发送之后,所有的广播接收器同时接收到 有序广播大致是这样,中间的一次接受广播,中间的接收器,接收之后,可以选择继续往下传播或者截断

两者的编码区别在于:

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

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

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

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

注册之前需要先创建一个接收器,也就是自定义一个; 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自动创建的话,是会自动静态注册的,

注意英文提示,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

本地广播

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

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

转载请注明原文地址: https://www.6miu.com/read-44980.html

最新回复(0)