Tôi đang liên kết với dịch vụ bằng cách này:Android: tham số đường chuyền qua dịch vụ từ Hoạt động
Hoạt động lớp:
ListenLocationService mService;
@Override
public void onCreate(Bundle savedInstanceState) {
...
Intent intent = new Intent(this, ListenLocationService.class);
intent.putExtra("From", "Main");
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
...
}
private ServiceConnection mConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName className,
IBinder service) {
LocalBinder binder = (LocalBinder) service;
mService = binder.getService();
}
public void onServiceDisconnected(ComponentName arg0) {
}
};
Đây là onBind
phương pháp Dịch vụ tôi:
@Override
public IBinder onBind(Intent intent) {
Bundle extras = intent.getExtras();
if(extras == null)
Log.d("Service","null");
else
{
Log.d("Service","not null");
String from = (String) extras.get("From");
if(from.equalsIgnoreCase("Main"))
StartListenLocation();
}
return mBinder;
}
Vì vậy, tôi có "null" trong LogCat
- gói là null trong s mặc dù tôi đã thực hiện intent.putExtra
trước bindService
Nói chung, Dịch vụ hoạt động tốt. Tuy nhiên tôi chỉ cần gọi StartListenLocation();
chỉ từ hoạt động chính của ứng dụng (tôi quyết định thực hiện việc này bằng cách gửi cờ).
Làm cách nào để gửi dữ liệu đến dịch vụ? Hoặc có thể có một cách khác để kiểm tra xem hoạt động nào đã được đưa ra onBind
?
Cảm ơn cho câu trả lời . Tôi gặp phải một vấn đề khác sau này, có thể bạn biết cách giải quyết nó: http://stackoverflow.com/questions/9956601/android-set-and-get-services-variable-in-different-activities –
@yorkw "Đây là cách liên kết dịch vụ liên kết được thiết kế để hoạt động trong API "- không phải tôi nghi ngờ bạn là chính xác, nhưng bạn có liên kết tới một số tài liệu Android chính thức nơi tôi có thể đọc thêm về điều này không? – DuneCat
@DuneCat, tôi đồng ý rằng tuyên bố không hoàn toàn chính xác, nó thực sự được tham chiếu một trong những cách được đề xuất mà Google đề xuất để triển khai dịch vụ bị ràng buộc, xem [tại đây] (http://developer.android.com/guide/components/bound -services.html # Binder) để biết thêm chi tiết. – yorkw