Хорошие рекомендации по разработке приложения для электронной коммерции - PullRequest
16 голосов
/ 09 июня 2010

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

Приложение взаимодействует с веб-сервисом.(magento api, что означает «мыло» или «xml rpc», к сожалению) и получает весь контент на телефон (категории продуктов, сведения о продукте, учетные данные пользователя и т. д.).Я думаю, что он должен выполнять ленивую загрузку или что-то в этом роде.

Итак, я думал сохранить учетные данные пользователя в пользовательском объекте, который будет храниться в SharedPreferences, чтобы каждый канд действия мог легко получить к нему доступ.Я буду использовать пару ListView для отображения содержимого и AsyncTask для получения необходимых данных.Должен ли я хранить все данные в памяти в объектах или я должен использовать какой-то кэш или локальную базу данных?Кроме того, я планирую использовать HashMap с SoftReferences для хранения загружаемых растровых изображений.Но разве это не пожирает много памяти?

Каким образом все действия имеют доступ ко всем этим объектам (корзина электронной коммерции и т. Д.)?Я думаю передать их с помощью Intents, но мне это не кажется правильным.Можно ли использовать SharedPreferences для большого количества объектов и есть ли какие-либо проблемы с параллелизмом?

Любые указатели были бы действительно признательны.Каковы некоторые хорошие рекомендации?Какие классы я должен изучить?Знаете ли вы какие-либо ресурсы в Интернете, чтобы я мог проверить?

Ответы [ 2 ]

12 голосов
/ 09 июня 2010

Очень подробный вопрос, я сделаю все возможное, чтобы ответить на него.Я использовал следующий подход в своем приложении:

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

  • Я пытаюсь сохранить все данные в памяти, которые необходимы во многих местах и ​​в согласованном состоянии, всю другую памятьпередается через сериализацию в json и через намерение, или я передаю только идентификаторы, и я получаю его из сети.(Существует определенная возможность обналичивания в локальной базе данных, но усилия по поддержанию ее актуальности в настоящее время требуют много работы.) Для хранения объектов, которые требуют много времени для перезагрузки из внутренней памяти или сети и повторного анализа, я используюпользовательское приложение , которое содержит ссылку на некоторые объекты контроллера, которые управляют кэшированием.Приложение будет оставаться в памяти, пока ваше приложение не будет закрыто.Это удобно, но может привести к необходимости большого объема памяти, если вы не будете осторожны.

  • Растровые изображения, загружаемые моей программой, кэшируются на двух уровнях.В первый раз, когда я хочу получить доступ к изображению, я создаю объект менеджера изображений внутри своей области действия.Этот объект попытается найти растровое изображение во внутренней карте.Если его там нет, он попытается загрузить его из памяти телефона, если его нет в памяти телефона, он загрузит его из сети, сохранит его в папке кэша моего приложения и поместит в карту.Таким образом, растровое изображение доступно, пока выполняется действие и очищается в тот момент, когда пользователь переходит на другой экран.До сих пор мне этого достаточно.

В конце просто начните программировать и возвращайтесь, если у вас возникнут другие вопросы или ошибки, и опубликуйте некоторые более конкретные вопросы.

1 голос
/ 16 июня 2010

Многие полезные методы, которые вам понадобятся: ContentProviders, AsyncTasks, Bitmap Caching, ... используются в Romain Guys 'Shelvs' (http://www.curious -creature.org / 2009/01/19 / shelves-an-open-source-android-application / ) app.Это отличная отправная точка для ознакомления с рекомендуемым Android-потоком.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...