android不同进程间的访问不同于同一进程间的访问,直接访问成员和方法会抛出异常:
java.lang.ClassCastException: android.os.BinderProxy cannot be cast to com.example.wtx.serviceprocess.MyService$MyBinder
测试及解决代码:
https://github.com/wang232024/ServiceProcess.git
不同进程中的activity获取service服务并调用其中的方法,这种方式大量见于Android源码。
1.创建AIDL文件IMyServiceAidl.aidl,AndroidStudio中点击MakeProject生成对应java文件IMyServiceAidl.java。
2.在该Java文件IMyServiceAidl.java文件末尾声明所要操作的方法。
3.在service服务中创建stub对象,并在该对象中实现这些方法,在onBind方法中返回这个stub。
4.activity中在onServiceConnected方法中获取这个stub对象,并调用其方法。