Где хранить большие данные приложений на устройствах Android? - PullRequest
7 голосов
/ 23 ноября 2010

В настоящее время я сталкиваюсь с проблемой, когда я должен сохранить структуру своего объекта на устройстве Android.

Вариант использования: я начинаю вызов сервера приложений (с помощью AsyncTask ), получаю хорошо известный ответ (xml-response) с сервера, анализирую данные и преобразовываю их наконец, в мою структуру объекта (очень сложная диаграмма классов со многими ассоциациями между классами). Пока это работает, благодаря отличному XMLPullParser;) Я задаюсь вопросом, где хранить (и, конечно, делиться) извлеченные данные между своими действиями ... Я уже знаю, что могу использовать sqlite, но у меня нет or-mapper (как hibernate в среде j2ee). Мне также не разрешается хранить эти конфиденциальные данные на устройстве (в sqlite или файловой системе), поэтому мой первый подход состоял в том, чтобы хранить эти данные в единственном экземпляре (который, конечно, хранится в памяти ...). Но что происходит, когда системе не хватает памяти, может ли Android «уничтожить» данные, хранящиеся в моем синглтоне? Я уже читал о расширении класса android.app.Application ... Так каков наилучший способ безопасного хранения данных объектов (вызываемых из "веб-службы") на устройствах Android?

Кстати: разработка Android - это круто! В настоящее время мы портируем приложение для Windows Mobile 6.5 на Android и iPhone, и мой коллега (ответственный за iPhone-dev) постоянно жалуется ^^

1 Ответ

2 голосов
/ 23 ноября 2010

Что касается картографа ИЛИ, на днях я встретил OrmLite . Это общий инструмент ORM для Java, но он также имеет некоторые специальные приспособления, которые заставляют его работать на Android . У меня еще не было времени, чтобы проверить это самостоятельно, но выглядит многообещающе:)

Что касается хранения конфиденциальных данных на телефоне, у вас действительно нет возможности хранить их только в памяти (используя какой-то синглтон, как вы предлагали). Как только ваше приложение переходит в фоновый режим, оно может быть мгновенно убито, поэтому у вас есть , чтобы сохранить данные, которые вы хотите каким-то образом сохранить. При этом, если вы сохраните данные в Внутреннее хранилище , это не будет доступно для любого другого приложения на телефоне (учитывая, что телефон не рутирован, потому что, если он рутирован, его легко обойти) , Я верю, что то же самое относится и к данным, которые вы храните с помощью SQLite, но я не уверен на 100%, поэтому я не буду это гарантировать.

Но в основном, если вы уверены, что ваше приложение будет работать только на некорневых устройствах, вы должны быть в безопасности, сохраняя свои данные во внутреннем хранилище. И если этого недостаточно, есть пакет javax.crypto , но я никогда не использовал его, поэтому ничего не могу сказать об этом.

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