Остановить службу, которая была запущена из другой службы в другом действии?

У меня есть Sticky Service B, который запускается из службы A. Служба A завершает работу вскоре после запуска службы B. Я хочу остановить службу B из действия C. Как я могу это сделать?

Это< Ссылка /a> дает возможность остановить службу из другого действия, но в этом случае служба была запущена действием.




Ответы (3)


Вы можете рассмотреть возможность использования BroadcastReceiver, чтобы передать событие службе и завершить ее.

person Andrei Tudor Diaconu    schedule 10.08.2015
comment
Вы можете транслировать событие из любого места и ловить его, где хотите. Я предлагал создать широковещательный приемник в вашем сервисе. Или используйте любую другую систему шины событий. - person Andrei Tudor Diaconu; 11.08.2015
comment
Я пытался сделать то, что вы предлагаете, но служба не останавливается. - person tanay tandon; 11.08.2015

Вам нужно позвонить stopService из своей деятельности. Не имеет значения, была ли служба запущена действием или другой службой, если вы предоставляете допустимый контекст в своем намерении. Если Служба не привязана ни к одному из клиентов, то вызов stopService остановит Службу.

stopService(new Intent(ActivityC.this, ServiceB.class));

Если вы хотите, чтобы Служба остановилась, вызовите stopSelf() внутри Службы.

person androholic    schedule 11.08.2015

http://developer.android.com/reference/android/app/Service.html#onStartCommand(android.content.Intent,%20int,%20int)

1. Создайте функцию handleStart()

private void handleStart(){
    //write your code here
}


2.переопределить onStartCommand

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    // TODO Auto-generated method stub

    if(startId == Service.START_STICKY) {
        handleStart();
        return super.onStartCommand(intent, flags, startId);
    }else
        return  Service.START_NOT_STICKY;
}


3. call stopService

stopService(new Intent(ActivityC.this, ServiceB.class));
person HenryChuang    schedule 11.08.2015