Context的registerReceiver用于注册BroadcastReceiver,代码如下:
//frameworks/base/core/java/android/content/Context.java
public abstract class Context {
public abstract Intent registerReceiver(@Nullable BroadcastReceiver receiver,
IntentFilter filter);
}
Context是抽象类,由其子类ContextImpl实现:
//frameworks/base/core/java/android/content/ContextImpl.java
class ContextImpl extends Context {
@Override
public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter) {
return registerReceiver(receiver, filter, null, null);
}
}
调用重载方法:
//frameworks/base/core/java/android/content/ContextImpl.java
class ContextImpl extends Context {
@Override
public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter,
String broadcastPermission, Handler scheduler) {
return registerReceiverInternal(receiver, getUserId(),
filter, broadcastPermission, scheduler, getOuterContext(), 0);
}
}
调用registerReceiverInternal方法:
//frameworks/base/core/java/android/content/ContextImpl.java
class ContextImpl extends Context {
final @NonNull LoadedApk mPackageInfo;
private Intent registerReceiverInternal(BroadcastReceiver receiver, int userId,