两年不用,突然使用有点蒙了,记录一下
服务端(提供执行能力的客户端,即写service的)
- 创建aidl类
clean一下项目他会自动创建帮助类
- 创建服务
public class RemoteService extends Service {
private MyBinder mMyBinder;
@Nullable
@Override
public IBinder onBind(Intent intent) {
if (mMyBinder == null) {
mMyBinder = new MyBinder();
}
return mMyBinder;
}
public class MyBinder extends IRtcService.Stub {
@Override
public String getBookName() throws RemoteException {
return "大保健";
}
@Override
public void setBookNumber(int number) throws RemoteException {
LogUtil.e("number==>" + number);
}
}
}
- 配置文件
<service
android:name=".RemoteService"
android:enabled="true"
android:exported="true"
android:process=":rtc_remote">
<intent-filter>
<action android:name="com.fuyao.module_webrtc.RemoteService" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</service>
客户端
- 将服务端的aidl文件夹copy到项目中来
- 绑定服务使用
public class Main2Activity extends AppCompatActivity {
private IRtcService iRtcService;
private Intent intent;
@Override
protected void onDestroy() {
super.onDestroy();
if (mConnection != null) {
unbindService(mConnection);
stopService(intent);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
intent = new Intent();
intent.setClassName("com.fuyao.elf_android_center", "com.fuyao.module_webrtc.RemoteService");
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
}
private ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
iRtcService = IRtcService.Stub.asInterface(service);
try {
iRtcService.setBookNumber(11111111);
String bookName = iRtcService.getBookName();
LogUtil.e("----->" + bookName);
} catch (RemoteException e) {
e.printStackTrace();
}
}
@Override
public void onServiceDisconnected(ComponentName name) {
if (mConnection != null) {
try {
iRtcService = null;
unbindService(mConnection);
} catch (Exception e) {
}
}
}
};
}
-
测试
先启动服务端,然后启动客户端
服务端接收数据
客户端接收数据
完成