Страница 1 из 1
Лезет противный Destroy
Добавлено: 27 мар 2014, 12:48
Casper
Привет. Вот и меня сюда привело. Начитался уроков.
Значит проблема такая.
1. Делаю программку.
2. Все есть, код, активити, класс, блютуз, все работает.
Но все это работает до тех пор, пока телефон не перейдет в режим ожидания (погаснет экран или я нажму кнопочку питания).
В это время вызывается зачем-то destroy. Ладно бы он просто паузился, но он почему-то уничтожается, а блутузный класс остается висеть в подключенном состоянии. Ну с этим разобрался, класс убить смог. Но зачем дестрой-то? Как это побороть.
Пока решил проблему методом "Не давать погаснуть дислпею". Но это полумера, ведь есть кнопка.
PowerManager и WakeLock не помогли. Точнее опять та же полумера. Кнопка убивает приложение, приложение рвет связь по блютузу.
Что делать?
Re: Лезет противный Destroy
Добавлено: 27 мар 2014, 13:05
klblk
Service
Re: Лезет противный Destroy
Добавлено: 27 мар 2014, 13:12
Casper
Краткость сестра таланта конечно. Но можно хотя бы чууууточку поподбробнее?
Буквально вот после написания осенило.
Прога имеет в манифесте принудительный альбомный режим.
При блокевроке телефон уходит в портретный и вот тут-то начинается возня с пересозданием активити. Но эт не дело. Это каждая софтина, которая вылезет (в том числе и звонок), будет разрушать мне активити, черт.
Мысля кружится - отдельный поток, в нем реализовать весь БТ обмен, и подсовывать ему хэндлер для сообщений. Но тут все стопится на вопросе, как блин с новой активири поймать этот отдельный поток, как то есть его вообще найти в системе.
Re: Лезет противный Destroy
Добавлено: 27 мар 2014, 13:14
Casper
mt = (MyTask) getLastNonConfigurationInstance();
Найдет нужный процесс, если он не асинхронный?
public class USE_BT extends Thread {
... run
... myInitProcedure
... myDoneProcedure
... myExtendWorkProcedures
}
типа такого создано
Он же принимает хэндлер и при активном режиме шлет сообщения с БТ в активити, где с ними разбирается кусок кода.
Re: Лезет противный Destroy
Добавлено: 27 мар 2014, 13:24
klblk
Ну по сервису есть уроки на этом сайте. Он работает в отдельном потоке, не зависящем от ui (а при желании и в отдельном процессе).
Re: Лезет противный Destroy
Добавлено: 27 мар 2014, 15:26
Casper
То есть мало геморроя с передачей данных по БТ, еще и возиться с обменом между службой и прогой?
Или я опять чего-то недопонял?
Re: Лезет противный Destroy
Добавлено: 28 мар 2014, 05:31
klblk
в целом да. Но я сказал не как проще, а как на мой взгляд правильнее сделать. А решать конечно вам.
Re: Лезет противный Destroy
Добавлено: 31 мар 2014, 08:52
Casper
Что-то я упустил это сообщение, не поблагодарил.
В общем, спасибо. Раз все так, значит я на верном пути.
Re: Лезет противный Destroy
Добавлено: 31 мар 2014, 09:10
Mikhail_dev
Ладно бы он просто паузился, но он почему-то уничтожается, а блутузный класс остается висеть в подключенном состоянии. Ну с этим разобрался, класс убить смог. Но зачем дестрой-то? Как это побороть.
Вообще это странно, и что-то мне подсказывает что это беда самого телефона. Но если говорить о правильности, если у вас приложение может работать в фоне, то стоит задуматься о сервисе. Правда есть один нюанс. Если делать обычный сервис, то вы получите сервис в другом потоке, но всё же В ТОМ ЖЕ процессе. А я так понимаю onDestroy телефон делает не только активности, но и всему процессу. Т.е. тут может понадобится делать процесс в отдельном процессе. А там уже межпроцессорное взаимодействие (например можно почитать про AIDL)