我们知道,安卓应用程序想要获取一些数据,需要利用安卓的一些系统服务,比如通过getSystemServer()获得一个LocationManager对象,再调用服务的一些方法,如通过requestLocationUpdata()来读取位置信息。系统服务接口是aidl文件,在编译时会自动生成java接口类文件,这个类中又定义了Stub类,Stub类中定义了本地代理类,这两个类都继承了接口类,是为了Binder进程间通信而使用的代理模式。在这个Stub类中会对每个方法设置一个code,从1开始依次增大。应用程序在调用系统服务的方法时,实际上调用的是服务代理对象的方法,这个方法会把服务接口包名、方法对应的code数据通过Binder进程间通信发送给Stub类再由其子类即服务类真正实现。