В приложении, над которым я сейчас работаю, мы позволяем пользователю загружать изображения на наш сервер.Я делаю это в потоке asyncTask и использую httpMime и отправляю изображение в виде байтового массива в одно из полей составной сущности.Я бы сказал, что в 80% случаев это прекрасно работает.Изображения отображаются на сервере в таблице mySql, так как longBlob не проблема.Остальные 20 процентов изображения теряются при загрузке из-за различных изменений в условиях сети или на более старых, менее способных устройствах, которые я тестировал на (HTC dream / tmobile G1), память выкалывала бы.Проблемы с памятью, с которыми я столкнулся, добавили серию блоков catch, чтобы больше не было проблем.Я пытался поиграть с httpconnectionparams, но я не уверен, что это сильно повлияло на проблему.
Как бы то ни было ..... теперь мне нужно небольшое руководство о том, как обрабатывать изображения, потерянные из-за сетевых проблем, таких каккак задержка, переключается с 4g на край и другие проблемы, такие как полная потеря покрытия.Я думал о фоновом сервисе, который проверял бы любые возвращаемые объекты с сервера и, если объект не имел изображения, связанного с ним, поставил в очередь фоновый сервис, чтобы повторить загрузку.Моя главная проблема не в том, что изображение не попадает на мой сервер во время тестирования, но иногда при тестировании во время вождения или где-нибудь на границе сервисного центра приложение передает только частичное изображение, которое я вижу в своей базе данных.
Итак ..... на этот раз мой вопрос к сообществу: как вы справились с такой проблемой?Один из способов, которым я пытался попробовать, - это отправлять фактический размер файла вместе с многочастной передачей на сервер, и если, когда изображение достигает установленного мной php, и не совпадает с размером int, представляющим размер файла, отправьте обратнозначение флага в ответе.Затем, основываясь на ответе, приложение возвращается, оно может снова запустить асинхронную задачу для повторной загрузки фотографии.Этот подход был бы довольно прост в настройке, но я хотел бы что-то более надежное, и, кроме того, если бы пользователь долго не освещал ситуацию, у меня был бы этот процесс зомби, разжевывающий их батарею ... ничего хорошего.
Как всегда, любая помощь по этому вопросу с мнениями, ссылками или другой помощью будет принята с благодарностью:)