当在代码中实时new 一个BroadcastReceiver时,需要为其register对应的intentfilter。根据Context.java,下面本文将介绍registerReceiver和registerReceiverAsUser两个方法的区别。 ---registerReceiver 此方法有下面两种参数形式: public abstract Intent registerReceiver(@Nullable BroadcastReceiver receiver, IntentFilter filter); public abstract Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter, @Nullable String broadcastPermission, @Nullable Handler scheduler); 其中,各个参数的含义如下: receiver:处理broadcast的BroadcastReceiver filter:用来过滤出此此receiver将处理的Broadcast的类型 broadcastPermission:broadcaster在发送某种intent的广播时所需要的权限,如果为空,则不需要权限。 scheduler:标识着接受该类Intent的广播的线程,如果为空,则表示进程的主线程作为接收方。 ---registerReceiverAsUser public abstract Intent registerReceiverAsUser(BroadcastReceiver receiver, UserHandle user, IntentFilter filter, @Nullable String broadcastPermission, @Nullable Handler scheduler); 此法跟上面的registerReceiver作用相同,只是要向拥有特定id的user发送broadcast。 相比较上面的registerReceiver方法,本方法多了一个user的UserHandler参数,表示接收broadcast的user id。 |
|
来自: Library_for_hj > 《Android学习》