SharedPreferences в основном для специфических настроек приложения, к которым вы можете получить доступ через меню настроек - например, настройки приложения. Это хорошая идея, чтобы все было просто - в основном логические флаги, короткие строки или целые числа. Данные SharedPreferences сохраняются при перезагрузке устройства и удаляются вместе с удалением приложения. Данные сохраняются в виде пары ключ-значение.
Внутреннее хранилище в основном используется для хранения больших непостоянных данных. Вы используете внутреннее хранилище, если хотите обработать изображение, короткий видеоклип, большой текстовый файл и т. Д. Но вы не сохраняете обработанные данные во внутреннем хранилище - его функция больше похожа на Оперативная память. Объем доступного внутреннего хранилища для вашего приложения зависит от устройства, но всегда рекомендуется хранить что-либо менее 1 МБ. На данные ссылаются через путь к файлу.
Внешнее хранилище относится не только к хранилищу SDCard, но для более дорогих телефонов это может означать внутреннее монтируемое хранилище (как в Galaxy Nexus или S2). Здесь вы храните большие видеофайлы, изображения с высоким разрешением и 20-мегабайтный текстовый файл, который вы хотите проанализировать в своем приложении. Это также место для хранения данных, которыми вы хотите поделиться на всех устройствах, если вы меняете SD-карты. На данные также ссылаются через путь к файлу.
Базы данных SQLite - это место, где вы можете хранить практически все, что вам нужно, в обычной базе данных - с преимуществом организации вещей в таблицы, строки и столбцы. Он лучше всего работает с вещами, которые вы хотите отобразить в пользовательском интерфейсе в виде списков - лучшим примером будет великое изобретение, известное как CursorAdapter. Сохраненные здесь данные также сохраняются при перезагрузке устройства и удаляются при удалении приложения. Вы также можете обмениваться данными между приложениями с помощью sqlite db, если подключите их к ContentProvider. Доступ к данным осуществляется с помощью Cursor , где вы можете вызывать методы, как если бы вы выполняли операторы sql.
Сетевое подключение на самом деле не является техникой хранения данных, но может быть способом сохранения данных для конкретного пользователя при условии, что устройство подключено к Интернету с использованием какой-либо аутентификации. Вы должны балансировать между загрузкой данных каждый раз, когда приложение нуждается в ней, или с одноразовой синхронизацией данных, что в конечном итоге приведет к другому из вариантов хранения, упомянутых выше.