一般跨进程的service,我们将其注册为binderservice
xref: /frameworks/base/services/core/java/com/android/server/BatteryService.java
publishBinderService("battery", new BinderService());
790 private final class BinderService extends Binder {
791 @Override
792 protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
793 if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
794 != PackageManager.PERMISSION_GRANTED) {
795
796 pw.println("Permission Denial: can't dump Battery service from from pid="
797 + Binder.getCallingPid()
798 + ", uid=" + Binder.getCallingUid());
799 return;
800 }
801
802 dumpInternal(pw, args);
803 }
804 }
我们看看publishBinderService的实现
xref: /frameworks/base/services/core/java/com/android/server/SystemService.java
163 protected final void publishBinderService(String name, IBinder service) {
164 publishBinderService(name, service, false);
165 }
继续调用同名的publishBinderService,多了一个参数
170 protected final void publishBinderService(String name, IBinder service,
171 boolean allowIsolated) {
172 ServiceManager.addService(name, service, allowIsolated);
173 }
可见最后还是调用ServiceManager.addService 来实现的,SystemService只是做简单的封装
getBinderService 也是通过调用erviceManager.getService得到,同样只是封装
178 protected final IBinder getBinderService(String name) {
179 return ServiceManager.getService(name);
xref: /frameworks/base/services/core/java/com/android/server/BatteryService.java
publishBinderService("battery", new BinderService());
790 private final class BinderService extends Binder {
791 @Override
792 protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
793 if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
794 != PackageManager.PERMISSION_GRANTED) {
795
796 pw.println("Permission Denial: can't dump Battery service from from pid="
797 + Binder.getCallingPid()
798 + ", uid=" + Binder.getCallingUid());
799 return;
800 }
801
802 dumpInternal(pw, args);
803 }
804 }
我们看看publishBinderService的实现
xref: /frameworks/base/services/core/java/com/android/server/SystemService.java
163 protected final void publishBinderService(String name, IBinder service) {
164 publishBinderService(name, service, false);
165 }
继续调用同名的publishBinderService,多了一个参数
170 protected final void publishBinderService(String name, IBinder service,
171 boolean allowIsolated) {
172 ServiceManager.addService(name, service, allowIsolated);
173 }
可见最后还是调用ServiceManager.addService 来实现的,SystemService只是做简单的封装
getBinderService 也是通过调用erviceManager.getService得到,同样只是封装
178 protected final IBinder getBinderService(String name) {
179 return ServiceManager.getService(name);