2013-07-03 6 views
2

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

enter image description here

Изображения будут расположены на AzureBlobStorage. Человек сможет предоставить уникальный ключ (GUID), приложение затем подключится к лазурной MobileServices, где находится база данных, содержащая все MenuItems (Имя, Категория, ImageName, ...) и сопоставьте ее с собственными локальная база данных SQL Lite. Изображения представляют собой файлы .PNG с двумя различными размерами. (150x150 & 1072x611)

Вопрос был бы, какой лучший подход для добавления изображений в приложение после создания .APK без потери скорости?

+0

Стоп и задумайтесь на минуту. Если кто-то задал вам этот вопрос точно так же, как указано выше, сколько вопросов вам нужно было бы задать в ответ, прежде чем вы даже поняли это требование? – Simon

+0

Действительно? Все, что я прошу, это лучший способ управлять ресурсами после создания .APK. Итак, представьте, что вы знаете, как добавлять чертежи во время выполнения, создавать эффективный менеджер ресурсов для управления изображениями, ....или что-то еще, действительно ли это займет много вопросов, чтобы понять это? Я готов изменить свой вопрос, если вы можете указать, где я не уверен. – Chris

+1

Вы говорите «короткую установку». Что это значит? Некоторые пользовательские интерфейсы, когда пользователь выбирает изображения? Где находятся эти изображения? Вы получаете их с сервера? Какие типы изображений? Какой размер? Если сервер, интернет или ЛВС? Где вы их сохраните? На SDCard или в частном хранилище ... и т. Д. Ваш вопрос - это «лучший подход» и «без потери» скорости. Очень расплывчато. Я просто пытаюсь помочь вам кратко описать то, что вы пытаетесь достичь. – Simon

ответ

1

Вы ничего не можете сделать по скорости извлечения из Azure (не выбрав облачный сервис на основе производительности, но Azure, вероятно, так же хорош, как и любой), и если ваш SQL-код эффективен, Q становится где и как хранить/retrieve и как сохранить пользовательский интерфейс при загрузке и установке изображений.

Я бы разместил его в частном хранилище, так как он обычно намного выше, чем SDCard и имеет меньше неизвестных.

Вы также должны уменьшить масштаб изображения до минимального разрешения, которое по-прежнему работает на целевых устройствах с высоким разрешением для вашего пользовательского интерфейса. Помните, что битмап в памяти занимает x * y * 4 байта по умолчанию, что составляет около 2.6 МБ каждый в вашем случае.

Android: high quality image resizing/scaling

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

Lazy load of images in ListView

Существует не так много вы можете сделать о скорости, чтобы загрузить из облака, так что вы должны делать это на фоне потока, например, AsyncTask и с использованием изображений-заполнителей в вашем списке до загрузки фактического изображения. Используйте notifyDataSetChanged() на вашем адаптере, чтобы просмотреть в списке вид, что произошли изменения.

http://android-developers.blogspot.co.uk/2010/07/multithreading-for-performance.html

http://codehenge.net/blog/2011/06/android-development-tutorial-asynchronous-lazy-loading-and-caching-of-listview-images/

Наконец, если вы действительно хотите хорошее решение для Android ООП, рассмотреть возможность реализации контент-провайдера.

http://developer.android.com/guide/topics/providers/content-providers.html#creating

What is the use of private Content Providers?

+0

Спасибо, много за этот полный ответ. Я забыл упомянуть, что приложение будет выполнять эту задачу только каждые 2-3 недели, и при ее выполнении ей не нужно запускать пользовательский интерфейс. Будет создана страница прогресса для инициализации/обновления приложения. Я буду оценивать варианты, которые вы разместили здесь, с моими коллегами. Большое большое спасибо. – Chris

+0

Добро пожаловать. Надеюсь, вы узнаете о деталях в вопросе, так как я потратил около 20 минут на разработку своего ответа, который теперь лишний, потому что эта информация не была в вашем первоначальном вопросе или редактировании. Удачи с вашим приложением. Cheers – Simon

+1

Да, я знаю. Я буду уделять больше времени в будущем, чтобы сформулировать более полные и полные вопросы, чтобы все могли понять. – Chris

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