当在代码中实时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。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。