@Override public void showResult(int result) { Log.d(TAG, " result : " + result); } }; /** * 注册connection */ private ServiceConnection mConnection = new ServiceConnection() { @Override public void onServiceDisconnected(ComponentName name) { Log.d(TAG, "onServiceDisconnected"); mService = null; } @Override public void onServiceConnected(ComponentName name, IBinder service) { Log.d(TAG, "onServiceConnected"); mService = IService.Stub.asInterface(service); try { mService.registerCallback(mCallback); } catch (RemoteException e) { Log.e(TAG, "", e); } } };} 最后不要忘记在manifest中加上service标记: 总结: 通过aidl总算实现了Service与Activity的通信,写起来麻烦点,使用诸如ContentProvider,Broadcast等也可以实现.这样做很像是在使用MVC设计模式(Activity负责View,Service以及其他类负责Model,aidl(ServiceConnection)负责Controller),其实我对于aidl也是一知半解- -,明天研究下如何让activity去调用service中的方法.