должны ли мы прерывать фоновый поток в методе ondestroy?

#android

#Android

Вопрос:

Я запускаю фоновый поток, который выполняется на протяжении всего жизненного цикла приложения. Нужно ли нам прерывать этот поток в методе onDestroy? или это обрабатывается системой Android? Если мы не прервем вручную, приведет ли это к утечкам памяти?

Комментарии:

1. Вы говорите о onDestroy действия? Если это так, вы пропускаете действие. Если у вас есть какая-то фоновая задача, которая должна выполняться в фоновом режиме, не имеющая прямого отношения к пользовательскому интерфейсу, вам следует использовать класс Service

2. Извините, забыл упомянуть, что мой фоновый поток обновляет пользовательский интерфейс.

3. Итак, рекомендуется отменять любую задачу, если есть что-то ожидающее выполнения в on destroy, поскольку, в зависимости от того, как создан ваш код, вы можете сохранить ссылку на это действие до тех пор, пока поток не исчезнет. Android не позаботится о завершении этого потока, поскольку контекст, в котором он выполняет свой тот же процесс Linux (экземпляр приложения aca). Представьте свое выполнение как изолированный процесс Linux, где вы выполняете свои действия.

Ответ №1:

Рекомендуется завершать отложенные задачи, когда действие прекращено, поскольку в принципе, что бы ни делал поток, это не окажет влияния на пользователя, поскольку это не изменит пользовательский интерфейс.

Что касается утечек памяти, приложения Android запускаются в процессе Linux, поэтому контекстом потоков является приложение, а не действие, поэтому, когда действие прекращается, ваш поток будет продолжать выполняться, и вы можете обновить объект смерти. Рекомендуется останавливать его, чтобы избежать утечки памяти, потому что вы сохраняете ссылку на то, что хотите обновить (конечно, если вы не используете WeakReference ).