2015-10-01 7 views
2

У меня есть приложение, которое имеет службу, которая выгружает фотографии, которые люди берут на сервер.Есть ли способ ограничить ресурсы, выделенные Сервисом?

В частности, пользователи отправляются на собственную камеру устройства, чтобы сделать снимок, а затем фото возвращается с помощью приложения, из которого они «одобряют» его.

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

Все это работает нормально.

Однако ... в ситуациях, когда есть плохая связь, но достаточная для установления связи HTTP, приложение оказывается в состоянии, когда даже при разгрузке происходит в Службе, в момент, когда пользователь приходит * назад к моему приложению с фотосъемки (и Android доставляет фотографию 4-8mb обратно в мое одобрение. Активность, мое приложение зависает - иногда достаточно долго, чтобы спровоцировать приглашение «вы хотите убить или подождать». В конце концов (если вы ждете) он действительно возвращается к приложению.

Я проверял, что это связано с сетью, потому что, когда соединение сильно (или когда приложение находится в режиме самолёта - так что загрузка просто не срабатывает мгновенно), все работает Совершенно гладко. * Единственное время, когда это происходит, - это когда разгрузчик в Сервисе затруднено ханким соединением.

Итак, мой вопрос: что я могу сделать по этому поводу? Есть ли способ изолировать Сервис, чтобы он не оказывал большего влияния на приложение? Мое решение написать партнерское приложение, которое находится на устройстве, и просто пытается выгрузить файлы (это даже решит проблему?).

HERE - это отчет, который я получаю, когда пользователю предлагается приглашение WAIT/KILL. Я не уверен, что с этим делать.

+0

«мое приложение зависает» - использовать TraceView и 'StrictMode', чтобы определить, где вы проводите слишком много времени на главном потоке приложения. – CommonsWare

+0

Hi Commons! Я просто привязал след. Я не могу сказать, что это говорит мне точно, хотя я подозреваю, что это подкрепляет мое подозрение, что все это вызвано очень медленным/плохим подключением к Интернету. –

+0

«Я просто привязал след» - это не имеет никакого отношения к Traceview или 'StrictMode'. – CommonsWare

ответ

0

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

http://gmariotti.blogspot.com/2013/03/antipattern-freezing-ui-with-service.html

Смежные вопросы