我想从我的 Android 应用程序到我的 Android 服务进行通信。我有两个选择,但我不知道该选择哪个:
- 使用应用程序注册服务
- 使用 LocalBinder 从应用程序连接到服务。
解决方案1
应用程序:
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) {
}
}
为了调用服务,应用程序使用对该服务的引用。
该服务是本地服务。 (不是远程服务)
这种方法在所有情况下都有效吗?
解决方案2
使用带有 ServiceConnection 的 LocalService 方法来绑定到符合示例的服务http://developer.android.com/reference/android/app/Service.html#LocalServiceSample http://developer.android.com/reference/android/app/Service.html#LocalServiceSample
解决方案 2 可行。示例 1 也能工作吗?与解决方案 2 相比,解决方案 1 的缺点是什么?
根据 Android 官方文档,服务旨在在后台执行长时间运行的操作,如果服务和活动之间存在大量交互,他们建议使用绑定服务。使用绑定服务的原因是Binding具有丰富的通信接口的优势。
https://stackoverflow.com/a/5066187/2839624 https://stackoverflow.com/a/5066187/2839624
我正在开发一个类似的应用程序,出于同样的原因,我选择了绑定服务,通过接口从活动到服务进行通信,并使用 Localbroadcastreceiver 从服务到活动进行事件通信。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)