我希望能够从我的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
使用LocalService方法并使用ServiceConnection绑定到服务,遵循示例上的方式http://developer.android.com/reference/android/app/Service.html#LocalServiceSample
解决方案2可行。解决方案1也可行吗?与解决方案2相比,解决方案1有什么优缺点?
Application
呢?这不是与一个Service
通信的好的设计方法。 - Squonk