PendingIntent для запуска и остановки службы
Я пытаюсь сделать простой виджет с кнопкой, которая запускает Service
с помощью OnClickPendingIntent()
. Я могу начать его нормально, но я не могу придумать способ остановить его (я знаю, что могу сделать это с помощью BroadcastReceiver
или чего-то подобного, но я хотел бы избежать жесткого кода).
Вот мой код:
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!!!!
}
1 ответ:
Есть несколько способов сделать это, вот один:
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()
, Вы можете проверить действие намерения на "стоп" (вы, вероятно, должны использовать лучшую строку) и вызватьstopSelf()
.