(3)实现客户端连接并且实现callback方法
private ServiceConnection mRemoteConnection = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
// TODO Auto-generated method stub
Log.d(TAG, "onServiceDisconnected");
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// TODO Auto-generated method stub
Log.d(TAG, "onServiceConnected");
mRemoteService = (IMyAidlService) IMyAidlService.Stub
.asInterface(service);
if(mRemoteService != null)
Log.d(TAG, "onServiceConnected success");
}
};
……
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String actionName = "com.zlc.aidl.server.MyAidlService";
Intent intent = new Intent(actionName);
boolean ret = bindService(intent, mRemoteConnection,
Context.BIND_AUTO_CREATE);
Log.d(TAG, " ret ?=" + ret);
if (ret) {
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
DemoParcelable demo = new DemoParcelable();
List<String> list = new ArrayList<String>();
list.add("like dance");
demo.setDemo_id((Integer) img.getTag());
demo.setDemo_name("meinv1");
demo.setDemo_list(list);
mRemoteService.registerClient(callback);
mRemoteService.saveDemoInfo(demo);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
}
}
});
}
……
private final AIDLCallback callback = new AIDLCallback.Stub() {
@Override
public int returnResult(List<DemoParcelable> list, int a)
throws RemoteException {
if (list != null)
Log.d(TAG, "list.size = " + list.size()+" a="+a);
for (DemoParcelable demoParcelable : list) {
doFresh(demoParcelable);
}
return 0;
}
@Override
public void testMethod(Bundle outParams) throws RemoteException {
// TODO Auto-generated method stub
if (outParams != null) {
outParams.putInt("width", 11);
outParams.putInt("height", 12);
}
}
};










