Лучший способ остановить привязку службы с помощью ServiceConnection в Activity в Android?

#android #service #android-activity #broadcastreceiver #android-intent

#Android #Обслуживание #android-активность #broadcastreceiver #android-намерение

Вопрос:

У меня есть служба, которая привязана к моей активности с помощью ServiceConnection. Служба запускается при создании Activity и останавливается в моем классе BroadcastReceiver и отлично работает. Теперь я хотел бы остановить службу по истечении заданного периода. Пытаюсь выполнить TimerTask в моем классе обслуживания, но, похоже, работает неправильно.

Любые предложения или решения будут с благодарностью приняты.

Спасибо.

Ответ №1:

Таймер также рассматривается как независимый Thread.so Контекст может быть изменен, когда вы пытаетесь остановить Службу.Мое решение — получить Pid текущей службы и отключить службу, используя Pid. android: атрибут процесса будет указан в androidmanifest.xml .

Процесс process = Runtime.getRuntime().exec(«kill pid»); Входной поток = process.getInputStream();

этот код работает нормально. попробуйте один раз

Ответ №2:

Объявите статическое значение в своем приложении:

 static Intent local_Intent;
 

При создании приложения назначьте новое намерение для службы и привяжите к local_Intent:

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    local_Intent = new Intent(this, yourAppService.class);
}
 

Назначение local_Intent запоминается, потому что local_Intent является статическим
Когда вы хотите запустить службу в своем приложении

  startService(local_Intent);
 

Когда вы хотите остановить службу в своем приложении

  stopService(local_Intent);