если уничтоженная служба означает, что поток тоже уничтожен
Нет.Поток будет продолжать работать даже после уничтожения Service
, пока ОС не завершит процесс вашего приложения в какой-то момент, что может привести к утечкам памяти.
Если вы создаете поток, вы должны очистить его.
как остановить запуск потоков, если они все еще работают?
Вы не должныиспользуйте stop()
для завершения потока, потому что остановка потока таким способом небезопасна и может оставить ваше приложение и ВМ в непредсказуемом состоянии.Более чистым способом очистки будет прерывание потока.Вам необходимо сохранить ссылку на Thread
.Затем, чтобы очистить поток, выполните следующие действия:
@Override
public void onDestroy() {
super.onDestroy();
thread.interrupt();
}
В run()
вашего Runnable in Thread, выполните следующие действия:
@Override
public void run() {
// stop your thread
if (interrupted()) {
return;
}
...
}