我想从我的 Android 应用程序与我的 Android 服务进行通信。我有两个选择,但我不知道该选择哪个:
- 向应用程序注册服务
- 使用 LocalBinder 从应用程序连接到服务。
解决方案一
应用:
public class MyApplication extends Application {
MyService myService;
public void setMyService(MyService myService) {
this.myService = myService;
}
public void testCallService(){
myService.sendResponseApdu("test".getBytes());
}
}
和服务:
public class MyService extends HostApduService {
@Override
public void onCreate() {
super.onCreate();
((MyApplication)getApplication()).setMyService(this);
}
@Override
public byte[] processCommandApdu(byte[] commandApdu, Bundle extras) {
return new byte[0];
}
@Override
public void onDeactivated(int reason) {
}
}
要调用服务,应用程序使用对服务的引用。 该服务是本地服务。 (不是远程服务) 这种方法是否适用于所有情况?
方案二
使用带有 ServiceConnection 的 LocalService 方法绑定(bind)到符合 http://developer.android.com/reference/android/app/Service.html#LocalServiceSample 上示例的服务
解决方案 2 将起作用。示例 1 也可以吗?与解决方案 2 相比,解决方案 1 的(缺点)优势是什么?
最佳答案
根据官方 android 文档,服务旨在在后台执行长时间运行的操作,如果服务和 Activity 之间存在大量交互,他们建议使用绑定(bind)服务。使用绑定(bind)服务的原因是绑定(bind)具有丰富的通信接口(interface)的优势。
https://stackoverflow.com/a/5066187/2839624
我正在开发一个类似的应用程序,出于同样的原因,我选择了绑定(bind)服务,通过接口(interface)从 Activity 到服务进行通信,并使用 Localbroadcastreceiver 将事件从服务到 Activity 进行通信。
关于android - 从应用程序到服务的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25863990/