1、3. Stringgreet(Stringsomeone);4. 在Eclipse插件的帮助下,编译器会自动在gen目录中生成对应的IPerson.java文件,格式化后的代码如下:2. 3. publicinterfaceextendsandroid.os.IInterface4. /*Local-sideIPCimplementationstubclass.*/5. publicstaticabstractclassStubandroid.os.Binderimplementscom.scott.aidl.IPerson6. 7. privatefinaljava.lang.StringD
2、ESCRIPTOR=com.scott.aidl.IPerson;8. 9. Constructtheatattachittointerface.10. Stub()11. this.attachInterface(this,DESCRIPTOR);12. 13. 14. 15. *CastanIBinderobjectintointerface,16. generatingaproxyifneeded.17. 18. asInterface(android.os.IBinderobj)19. (obj=null)20. returnnull;21. 22. iin(android.os.II
3、nterface)obj.queryLocalInterface(DESCRIPTOR);23. (iin!null)&(iininstanceofcom.scott.aidl.IPerson)24. (com.scott.aidl.IPerson)iin);25. 26. newcom.scott.aidl.IPerson.Stub.Proxy(obj);27. 28. 29. android.os.IBinderasBinder()30. this;31. 32. 33. Override34. booleanonTransact(intcode,android.os.Parceldata
4、,reply,intflags)35. throwsandroid.os.RemoteException36. switch(code)37. caseINTERFACE_TRANSACTION:38. reply.writeString(DESCRIPTOR);39. true;40. 41. TRANSACTION_greet:42. data.enforceInterface(DESCRIPTOR);43. _arg0;44. _arg0data.readString();45. _resultthis.greet(_arg0);46. reply.writeNoException();
5、47. reply.writeString(_result);48. 49. 50. 51. super.onTransact(code,flags);52. 53. 54. Proxy55. mRemote;56. 57. Proxy(android.os.IBinderremote)58. mRemoteremote;59. 60. 61. 62. 63. 64. 65. getInterfaceDescriptor()66. DESCRIPTOR;67. 68. 69. greet(java.lang.Stringsomeone)70. _dataandroid.os.Parcel.ob
6、tain();71. _reply72. _result;73. try74. _data.writeInterfaceToken(DESCRIPTOR);75. _data.writeString(someone);76. mRemote.transact(Stub.TRANSACTION_greet,_data,_reply,0);77. _reply.readException();78. _reply.readString();79. finally80. _reply.recycle();81. _data.recycle();82. 83. 84. 85. 86. 87. TRAN
7、SACTION_greet(android.os.IBinder.FIRST_CALL_TRANSACTION+88. 89. 90. android.os.RemoteException;91. 该文件的大纲视图如下:IPerson接口中的抽象内部类Stub继承android.os.Binder类并实现IPerson接口,比较重要的方法是asInterface(IBinder)方法,该方法会将IBinder类型的对象转换成IPerson类型,必要的时候生成一个代理对象返回结果。接下来就是我们的Service了:com.scott.server;3. importandroid.app.Service;4. import
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1