6

Próbuję utworzyć prosty widget za pomocą przycisku, który rozpoczyna się od Service z OnClickPendingIntent(). Mogę uruchomić go dobrze, ale nie mogę wymyślić sposób, aby to zatrzymać (wiem, że mogę to zrobić z BroadcastReceiver lub coś podobnego, ale chciałbym uniknąć hardcode).Oczekiwanie na uruchomienie i zatrzymanie usługi

To jest mój kod:

 Intent intent = new Intent(context, myService.class); 
     PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0); 

     RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_widget); 

     if (!ismyserviceup(context)) { 
      views.setOnClickPendingIntent(R.id.my_button, pendingIntent); 
     } else { 
      // i need to stop it!!!! 
     } 

Odpowiedz

17

Istnieje wiele sposobów, aby to zrobić, tutaj jest jeden:

Intent intent = new Intent(context, myService.class); 

    RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_widget); 

    if (ismyserviceup(context)) { 
     intent.setAction("STOP"); 
    } 
    PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0);     
    views.setOnClickPendingIntent(R.id.my_button, pendingIntent); 

Następnie na serwisowanie na onStartCommand(), można sprawdzić zamiarem działania na „stop” (powinieneś prawdopodobnie użyć lepszego ciągu znaków) i zadzwoń pod numer stopSelf().