implementation 'com.jeremyliao:interface-loader:0.0.1'
implementation 'com.jeremyliao:service-fetcher-rxjava2:0.0.1'
https://github.com/JeremyLiao/InterfaceLoader
服务端包名 com.daiyao.test
![](https://img.haomeiwen.com/i8830165/8b369ad6560b57a3.png)
![](https://img.haomeiwen.com/i8830165/8cd9c192a9e7ff36.png)
ILoaderDemo.java
package sh.qiyi.posterboard.binder;
public interface ILoaderDemo {
int plus(int a, int b);
int minus(int a, int b);
int multi(int a, int b);
}
ILoaderDemoService.java
public class LoaderDemoService extends Service {
public static final String ACTION = "intent.action.loader";
@Override
public void onCreate() {
super.onCreate();
XLog.d("onCreate");
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public IBinder onBind(Intent intent) {
XLog.d("onBind");
return InterfaceService.newService(ILoaderDemo.class, new ILoaderDemo() {
@Override
public int plus(int a, int b) {
return a + b;
}
@Override
public int minus(int a, int b) {
return a - b;
}
@Override
public int multi(int a, int b) {
return a * b;
}
});
}
}
在MainActivity 或者 Application里面initBinderService
private void initBinderService() {
Intent intent = new Intent(AppConstant.binderServiceName);
intent.setPackage(getPackageName());
ServiceFetcher serviceFetcher = new ServiceFetcher(this, intent);
serviceFetcher.bindService();
}
客户端包名 com.daiyao.client
新建一个com.daiyao.test的包名, 跟服务端ILoaderDemo包名一致!! 然后将ILoaderDemo文件拷贝过来
Intent intent = new Intent("intent.action.loader");
intent.setPackage("com.daiyao.test");
ServiceFetcher serviceFetcher = new ServiceFetcher(TestActivity.this, intent);
disposable.add(serviceFetcher.getService()
.map(new Function<IBinder, Integer>() {
@Override
public Integer apply(@NonNull IBinder binder) throws Exception {
return InterfaceLoader.getService(ILoaderDemo.class, binder)
.plus(10, 20);
}
})
.map(new Function<Integer, String>() {
@Override
public String apply(@NonNull Integer result) throws Exception {
return "result: " + result;
}
})
.subscribe(new Consumer<String>() {
@Override
public void accept(String result) throws Exception {
mockBinderConnect.setText(result);
}
}));
网友评论