我想从我的Android应用程序与我的Android服务进行通信.我有两个选择,但我不知道选择哪个:
解决方案1
应用程序:
public class MyApplication extends Application {
MyService myService;
public void setMyService(MyService myService) {
this.myService = myService;
}
public void testCallService(){
myService.sendResponseApdu("test".getBytes());
}
}
Run Code Online (Sandbox Code Playgroud)
和服务:
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) {
}
}
Run Code Online (Sandbox Code Playgroud)
要调用该服务,应用程序将使用对服务的引用.该服务是一项本地服务.(不是远程服务)这种方法是否适用于所有情况?
解决方案2
使用带有ServiceConnection的LocalService方法绑定到服务符合http://developer.android.com/reference/android/app/Service.html#LocalServiceSample上的示例
解决方案2将起作用.示例1也会起作用吗?与解决方案2相比,解决方案1的(dis)优势是什么?
根据 Android 官方文档,服务旨在在后台执行长时间运行的操作,如果服务和活动之间存在大量交互,他们建议使用绑定服务。使用绑定服务的原因是Binding具有丰富的通信接口的优势。
我正在开发一个类似的应用程序,出于同样的原因,我选择了绑定服务,通过接口从活动到服务进行通信,并使用 Localbroadcastreceiver 从服务到活动进行事件通信。
| 归档时间: |
|
| 查看次数: |
407 次 |
| 最近记录: |