

服务端:
//CalculateInterface.aidlpackage com.itheima.aidl.calculate;interface CalculateInterface {double doCalculate(double a, double b);}//CalculateService.javapackage com.itheima.myaidl.server;import com.itheima.aidl.calculate.CalculateInterface;import android.app.Service;import android.content.Intent;import android.os.IBinder;import android.os.RemoteException;import android.util.Log;public class CalculateService extends Service{private final CalculateInterface.Stub mBinder = new CalculateInterface.Stub() {@Overridepublic double doCalculate(double a, double b) throws RemoteException {return a+b;}};@Overridepublic IBinder onBind(Intent intent) {Log.i("test","onBind...");return mBinder;}@Overridepublic boolean onUnbind(Intent intent) {Log.i("test","onUnbind...");return super.onUnbind(intent);}@Overridepublic void onCreate() {super.onCreate();Log.i("test","onCreate...");}@Overridepublic void onDestroy() {super.onDestroy();Log.i("test","onDestroy...");}}//服务端manifast文件<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.itheima.myaidl.server"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="14"android:targetSdkVersion="19" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activity android:name="com.itheima.myaidl.server.MainActivity"android:configChanges="locale|layoutDirection"android:theme="@android:style/Theme.Light.NoTitleBar"android:screenOrientation="portrait"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><service android:name="com.itheima.myaidl.server.CalculateService"><intent-filter><action android:name="com.itheima.myaidl.server.CalculateService" /></intent-filter></service></application></manifest>//客户端//MainActivity.javapackage com.itheima.myaidl.client;import android.app.Activity;import android.content.ComponentName;import android.content.Context;import android.content.Intent;import android.content.ServiceConnection;import android.os.Bundle;import android.os.IBinder;import android.os.RemoteException;import android.util.Log;import com.itheima.aidl.calculate.CalculateInterface;public class MainActivity extends Activity {private CalculateInterface mService;private ServiceConnection mServiceConnection = new ServiceConnection() {@Overridepublic void onServiceDisconnected(ComponentName name) {Log.i("test","service disconnected...");mService = null;}@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {Log.i("test","service connected...");mService = CalculateInterface.Stub.asInterface(service); //获取接口实例}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//绑定远程服务Bundle bundle = new Bundle();Intent intent = new Intent();intent.putExtras(bundle);intent.setAction("com.itheima.myaidl.server.CalculateService");bindService(intent, mServiceConnection, Context.BIND_AUTO_CREATE);}//TODO activity加载完毕时回调此方法@Overridepublic void onWindowFocusChanged(boolean hasFocus) {if(hasFocus){try{double result = mService.doCalculate(1, 2);Log.i("test","result===>"+result);}catch(RemoteException e){e.printStackTrace();}}super.onWindowFocusChanged(hasFocus);}@Overrideprotected void onDestroy() {unbindService(mServiceConnection); //解绑远程服务super.onDestroy();}}运行结果截图:
以上所述是小编给大家介绍的Android中如何利用AIDL机制调用远程服务的相关知识,希望对大家有所帮助!