-------基本的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的创建,更复杂的问题未写