Để bắt đầu dịch vụ của tôi từ Activiy I, hãy sử dụng startService(MyService.class)
. Điều này làm việc tuyệt vời, nhưng trong trường hợp đặc biệt, dịch vụ nên được bắt đầu khác nhau. Tôi muốn chuyển một số tham số cho dịch vụ bắt đầu.Android: bắt đầu dịch vụ với thông số
Tôi đã thử các sau đây trong Hoạt động của tôi:
Intent startMyService= new Intent();
startMyService.setClass(this,LocalService.class);
startMyService.setAction("controller");
startMyService.putExtra(Constants.START_SERVICE_CASE2, true);
startService(startMyService);
Trong Dịch vụ của tôi, tôi sử dụng:
public class MyIntentReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("controller"))
{
// Intent was received
}
}
}
Các IntentReceiver được đăng ký trong onCreate() như thế này:
IntentFilter mControllerIntent = new IntentFilter("controller");
MyIntentReceiver mIntentReceiver= new MyIntentReceiver();
registerReceiver(mIntentReceiver, mControllerIntent);
Với giải pháp này, dịch vụ bắt đầu nhưng không nhận được ý định. Tôi làm cách nào để bắt đầu Dịch vụ và chuyển các thông số của mình?
Cảm ơn sự giúp đỡ của bạn!
MyIntentReceiver for? Bạn có muốn nghe một số chương trình phát sóng cụ thể và thay đổi hành vi dịch vụ của mình không? – Audrius
@ Audrius: Vâng, bạn nói đúng. MyIntentReceiver được sử dụng để thay đổi hành vi của dịch vụ của tôi. Có 2 trạng thái trong dịch vụ của tôi: Một khi bắt đầu dịch vụ, một dịch vụ khác khi dịch vụ đang chạy. – Mike