Потоки Android и таймер замедляют работу при блокировке экрана

Сначала извините за мой английский. У меня есть проблема, и я не могу найти решение, это звучит так: я разрабатываю приложение, которое получает мое местоположение от GPS и отправляет его на сервер tcp на ПК и сохраняет данные в виде списка (например, ). Я установил таймер, который отправляет местоположение каждые 2 секунды. Все работает нормально, даже если я подключаю двух клиентов к серверу, пока телефоны не будут заблокированы ... затем мой сервер получает уродливую строку ... похоже, что отправленные строки он охватывает (строка содержит части данных от купленных клиентов, части объединены ) .. но когда я разблокирую телефоны, сервер снова получает нормальные строки .. Я хочу знать, как заставить мое приложение работать с теми же параметрами, когда происходит блокировка экрана .. Есть идеи?


person Madalin Stefan    schedule 29.01.2015    source источник
comment
я переопределяю onPuase ... и заставляю его ничего не делать, что должно означать, что мое приложение продолжает работать ... но это не так ... или я устал? но я не думаю, что это проблема, потому что, если я нажму кнопку «Домой», мое приложение будет работать отлично, пока телефон не будет заблокирован.   -  person Madalin Stefan    schedule 30.01.2015


Ответы (2)


Если вы делаете это внутри действия или фрагмента, у вас, вероятно, возникла проблема с жизненным циклом вашего приложения. Если вы хотите понять жизненный цикл, прочитайте эту статью документации: http://developer.android.com/training/basics/activity-lifecycle/index.html

Если вы ничего не сделаете с методом onPause, ваша активность не заснет, Android может убить вашу активность в любое время.

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

Более простым решением было бы использовать что-то вроде этой библиотеки опроса местоположения и настроить ее под свои нужды.

person Julian Suarez    schedule 29.01.2015

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

Если вы читали о жизненном цикле активности.

При обычном использовании приложения действия на переднем плане иногда перекрываются другими визуальными компонентами, что приводит к приостановке действия. Например, когда открывается полупрозрачное действие (например, в стиле диалога), предыдущее действие приостанавливается. Пока действие все еще частично видно, но в настоящее время не находится в фокусе, оно остается приостановленным.

Однако, как только активность полностью заблокирована и не видна, она останавливается (что обсуждается в следующем уроке).

Жизненный цикл активности с Android comЖизненный цикл активности с android.com

person Community    schedule 29.01.2015