2016-12-29 2 views
0

Ich starte Dienst von Aktivität, die Daten durch Socket an Server senden. Wenn der Dienst in seiner onCreate() Methode gestartet wird, setze ich auch Alarm mit setExact() Methode. Mein Problem ist, dass, wenn onReceive() in BroadcastReceiver aufgerufen wird, ich den Dienst stoppen möchte, der funktioniert, aber es ist auch sofort wieder gestartet. Der Dienst wird mit dem nächsten Code gestoppt:Dienst kann nicht von BroadcastReceiver

die ordnungsgemäß funktionieren, wenn es von Activity aufgerufen wird. Wenn BroadcastReceiver ausgeführt wird, wird keine Aktivität an diesen Dienst gebunden, so dass es aufhören sollte, ohne sofort neu zu erstellen.

Antwort

1

Ihr Service.

private Intent myservice; 

Ihren Dienst auf Methode starten onCreate()

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

auch können Sie Ihren Service mit Handler starten.

Und für Stop verwenden Sie Handler.

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; 
     } 
    } 
}; 

für Handler auf BroadcastReceiver machen dieses

handler.sendEmptyMessage(1); 
Verwandte Themen