6

我試圖用一個按鈕開始ServiceOnClickPendingIntent()一個簡單的小部件。我可以開始很好,但我不知道一種方法來阻止它(我知道我可以用BroadcastReceiver或類似的東西來做,但我想避免硬編碼)。PendingIntent啓動和停止服務

這是我的代碼:

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

回答

17

有多種方法可以做到這一點,這裏有一個:

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

然後在服務的onStartCommand(),您可以檢查的意圖行動「STOP」 (你應該使用更好的字符串),並致電stopSelf()