2016-12-29 7 views
0

Я запускаю службу из активности, которая отправляет данные через сокет на сервер. Когда сервис запущен в методе onCreate(), я также установил будильник с помощью метода setExact(). Моя проблема в том, что когда onReceive() в BroadcastReceiver называется, я хочу прекратить обслуживание, которое работает исправно, но оно также сразу начинается снова. Служба прекращается следующим кодом:Невозможно убить службу из BroadcastReceiver

Intent i = new Intent(context, SocketService.class); 
context.stopService(i); 

которые работают правильно, если они вызваны из Activity. Когда выполняется BroadcastReceiver, никакая деятельность не привязана к этой службе, поэтому она должна останавливаться без немедленного воссоздания.

ответ

1

Ваш сервис.

private Intent myservice; 

Запустите службу по методе OnCreate()

myservice = new Intent(this, myservice.class); 
    startService(myservice); 

также вы можете начать службу с обработчиком.

И для остановки использования обработчика.

private Handler handler = new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
     switch (msg.what) { 
      case 1: 
        stopService(myservice); 
       break; 
      default: 
       Log.d("STOP", msg.what + " ? "); 
       break; 
     } 
    } 
}; 

для использования обработчика на BroadcastReceiver сделать этот

handler.sendEmptyMessage(1);