2012-04-30 1 views
1

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

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

Я думаю, лучше создать 2 версии на устройстве и U/L как?

Я также делаю это в BG, поэтому пользователь не будет заблокирован надолго ... Это хорошее поведение? Должен ли я заблокировать пользователя в течение 10-20-30 секунд (в зависимости от скорости сети?)

Что общего? Рекомендации?

+0

Извините, что означает U/L? –

ответ

2

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

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

+0

Приложение Android Camera сохранит миниатюру и большую версию фотографии, если я не ошибаюсь. – SeanPONeil

+0

Это не значит, что вы должны загрузить оба из них;) –

+1

Я согласен с точкой зрения Джоэла. –

1
  • Отправка изображений с использованием типа многостраничного контента.

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

  • Говоря о размере вашего Bitmap, я думаю, вам стоит подумать о отправке только одной нормальной версии и дать возможность делать миниатюры сервером. Однако вам необходимо сжать его (JPEG/PNG), и вы также можете уменьшить его в 2 раза, иначе могут возникнуть ошибки памяти.

  • На стороне примечания (на самом деле не связано с вашим вопросом) будьте осторожны с тем, сколько памяти осталось использовать для вашего приложения при отображении большого количества Bitmap. До Honeycomb Bitmap были выделены на нативной куче, но учтены в куче VM (если я не ошибаюсь), поэтому не учитывайте, сколько памяти осталось на куче VM. Это talk стоит посмотреть, если вы еще этого не сделали.