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