Нить заставляет активность давить при вращении - PullRequest
1 голос
/ 17 августа 2011

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

android:screenOrientation="portrait"

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

Ответы [ 4 ]

1 голос
/ 25 августа 2013

Вы должны добавить это к объявлению активности в манифесте:

android:configChanges="keyboardHidden|orientation|screenSize"
1 голос
/ 17 августа 2011

Вы можете использовать asynctask и остановить его в методе Activity.onPause ().

На важном боковом узле установка свойства android:screenOrientation="portrait" не помешает Android уничтожить и воссоздать экран при изменении ориентации, просто не будет отображать ландшафтный режим.

0 голосов
/ 18 августа 2011

Содержит ли ваш поток ссылки на объекты пользовательского интерфейса, например кнопки?Если это так, поскольку ротация разрушает и воссоздает действие, вы будете ссылаться на старые объекты, а не на новые.Вот почему необходимо уничтожить и воссоздать поток или асинхронную задачу.

0 голосов
/ 17 августа 2011

Когда пользователь поворачивает устройство, ваше приложение перезапускается в этом процессе, вызывается метод onDestroy.Таким образом, вы можете использовать метод Activity.onDestroy для уничтожения / остановки вашего потока.
http://developer.android.com/reference/java/lang/Thread.html там вы можете найти методы остановки, уничтожения, прерывания и другие, не зная, какой из них следует использовать прямо сейчас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...