Tôi muốn liên lạc từ Ứng dụng Android của mình với Dịch vụ Android của mình. Tôi đã hai lựa chọn nhưng tôi không biết nên chọn:Giao tiếp từ Đơn đăng ký đến Dịch vụ
- Đăng ký dịch vụ với các ứng dụng
- Sử dụng LocalBinder để kết nối từ ứng dụng đến dịch vụ.
Giải pháp 1
Việc áp dụng:
public class MyApplication extends Application {
MyService myService;
public void setMyService(MyService myService) {
this.myService = myService;
}
public void testCallService(){
myService.sendResponseApdu("test".getBytes());
}
}
và dịch vụ:
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) {
}
}
Để gọi các dịch vụ ứng dụng sử dụng các tham chiếu đến các dịch vụ. Dịch vụ là một dịch vụ địa phương. (không phải là một dịch vụ từ xa) Cách tiếp cận này có hiệu quả trong mọi hoàn cảnh không?
Giải pháp 2
Sử dụng cách tiếp cận LocalService với một ServiceConnection liên kết với các dịch vụ phù hợp với ví dụ trên http://developer.android.com/reference/android/app/Service.html#LocalServiceSample
Giải pháp 2 sẽ làm việc. Ví dụ 1 có hoạt động không? Lợi thế (dis) của giải pháp 1 so với giải pháp 2 là gì?
Tại sao bạn mở rộng 'Ứng dụng' cho điều này? Nó không thực sự là một cách tiếp cận thiết kế tốt để giao tiếp với một 'Dịch vụ'. – Squonk
Chúng tôi mở rộng Ứng dụng để thực hiện khởi chạy một lần và giữ tham chiếu đến phiên. – userM1433372