2013-12-19 3 views
2

Я разбираю Rss-канал, используя парсер sax в android. Я могу отображать данные онлайн, когда сеть подключена, но я также хочу, чтобы она работала в автономном режиме и обновляла ее, когда она снова подключается к интернету/Wi-Fi. Я понятия не имею, как это сделать.Android Хранение RSS-файлов проанализированных данных в базе данных для использования в автономном режиме

Какой должен быть мой лучший подход сейчас? Должен ли я строить базу данных Sql? учитывая, что у меня есть изображения. Или есть другой простой способ. Я предпочел бы более простой способ.

Мне нужно некоторое предложение по подходу базы данных Sql здесь. Во-первых: Мои rss-каналы предоставляют ссылки на URL-адреса изображений, которые я использую для работы с растровым и insutstream во время выполнения, но теперь для автономной работы мне нужно сохранить полные изображения, например whatsapp. это правильно ? если да, как сохранить полные изображения в базе данных? И последнее, что я хочу сохранить полную базу данных на SD-карте не во внутренней памяти, хранение данных на SD-карте будет работать нормально или это создаст проблему? потому что whatsapp хранит достаточно данных во внутренней памяти! если сохранение на SD-карте не является проблемой, как хранить полные данные на SD-карте?

ответ

2

Это зависит от того, как долго вы хотите, чтобы данные сохранялись. Задайте себе вопрос:

Должны ли эти данные быть доступными пользователям после перезагрузки телефона или после принудительного закрытия приложения? Должен ли он быть доступен, независимо от того, в последний раз у меня была возможность подключения, насколько это возможно, учитывая это?

В таком случае, тогда да - вы должны использовать базу данных. Android имеет ряд встроенных вспомогательных классов для баз данных sqlite.

http://developer.android.com/training/basics/data-storage/databases.html

Который должен вам начать.

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

Save bitmap to location

Ваши другие варианты, AFAIK являются:

1) SharedPreferences (на самом деле не подходит для этого).

2) Сериализация ваших данных и запись/чтение из какого-либо файла.

Если вы все еще ищете для получения дополнительной информации о концепциях баз данных и Android, здесь очень хороший учебник по этой теме:

http://www.vogella.com/articles/AndroidSQLite/article.html

+0

Можете ли вы поделиться лучшей реализацией кода базы данных? который показывает чтение и запись в базу данных из моего списка объектов. Мой объект java «Данные» выглядит так: public class Данные { \t \t приватная строка скидка; \t частное место расположения струн; \t приватное название строки; \t частный String Image; \t private String Описание; \t } Я получаю список этих объектов после разбора. – gandharv09

+0

Я бы порекомендовал вам прочитать связанную документацию по Android, так как она очень тщательно охватывает тему и содержит множество примеров кода, чтобы получить доступ. –

+0

Добавлена ​​ссылка на хороший учебник по db, который дает вам более полное изображение кода, чем документы. –

0

Вы можете использовать droidQuery загрузить RSS Feed и кэша это. Отработка this gist, который ожидает вас использовать android-rss библиотеку, вы можете добавить следующие флаги кэша вашего AjaxOptions объекта:

.cache(true).cacheTimeout(AjaxCache.TIMEOUT_NEVER) 

Это сделает это так, то ответ кэшируются, пока вы явно не вызовете:

AjaxCache.sharedCache().clearCache(); 

Что вы можете сделать после подключения сети (для получения справки об этом, проверьте NetWatcher).

Обратите внимание, что использование этого механизма кэширования позволяет очень простое решение, которое будет храниться до тех пор, пока процесс приложения будет активным. Если вы хотите сохранить все сеансы, так что если пользователь откроет приложение позже и не будет в сети, вам нужно будет использовать что-то более сложное и продолжительное, например SharedPreferences или SQLite. Хороший список опций можно найти here.

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