-------基本的AIDL的使用
1、首先要创建Book.aidl和IBookManager.aidl
2、服务器的创建:
public class BookMangerService extends Service { private CopyOnWriteArrayList<Book> mBookList = new CopyOnWriteArrayList<Book>(); private Binder mbinder = new IBookManager.Stub(){//这里用的是IBookManger的ALDL中的方法 @Override public List<com.example.fyq.broadtest.Book> getBookList() throws RemoteException { return mBookList; } @Override public void addBook(com.example.fyq.broadtest.Book book) throws RemoteException { mBookList.add(book); } }; public BookMangerService() { } @Override public void onCreate() { super.onCreate(); mBookList.add(new Book(1,"Android1")); mBookList.add(new Book(2,"Android2")); } @Override public IBinder onBind(Intent intent) { return mBinder; } }
3、创建完成后,需要注册Service
4、客户端类
public class BookMangerActivity extends Activity { private static final String TAG = "BookMangerActivity"; private ServiceConnection serviceCon = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { IBooklManager bookManger = new IBooklManager.Stub.asInterface(service); try { List<Book> list = bookManger.getBookList();//主要是调用getBookList方法获取Book Log.i(TAG, "onServiceConnected: " + list.getClass().getCanonicalName()); Log.i(TAG, "onServiceConnected: " + list.toString()); }catch (Exception e ){ e.printStackTrace(); } } @Override public void onServiceDisconnected(ComponentName name) { } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_book_manger); Intent intent = new Intent(BookMangerActivity.this,BookMangerService.class); bindService(intent, serviceCon, Context.BIND_AUTO_CREATE); } @Override protected void onDestroy() { unbindService(serviceCon); super.onDestroy(); } }5、以上是基本的AIDL的创建,更复杂的问题未写