Страницы

Поиск по вопросам

пятница, 20 декабря 2019 г.

Android, как сохранять данные без базы данных?

#java #android


Только начала учить Android, пишу в Android Studio. Есть на уме идея для одной программы,
но для этого мне надо научиться сохранять данные. Слышала, что использовать SqlLite
нужно только при больших объемах памяти. Мне же, грубо говоря, нужно сохранять только
имя пользователя и ещё какую-то общую информацию и выводить это в List. Как мне это
сделать? Как правильно сохранять эти данные? В какой-то массив или отдельный файл?
    


Ответы

Ответ 1



Для сохранения данных вы можете использовать SharedPreferences SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(MainActivity.this); Чтобы начать запись в файл настроек, вы должны вызвать метод edit() объекта SharedPreferences, который возвращает объект SharedPreferences.Editor. SharedPreferences.Editor editor = sharedPreferences.edit(); Объект SharedPreferences.Editor имеет несколько интуитивных методов, которые можно использовать для хранения новых пар ключ-значение в файле настроек. Например, вы можете использовать метод putString(), чтобы поместить пару ключ-значение со значением типа String editor.putString("name", "Danil"); editor.putInt("age", 20); Чтобы сохранить записи вы должны вызвать метод commit(). editor.commit(); Чтение из объекта SharedPreferences гораздо проще. Всё, что вам нужно сделать, так это вызвать соответствующий метод get*() String name = sharedPreferences.getString("name", "unknown"); int age = sharedPreferences.getInt("age", 0);

Ответ 2



Основными вариантами хранения данных в Android, являются: сохранение пар "ключ-значение" для простых типов данных в общем файле настроек (SharedPreferences); использование баз данных под управлением SQLite; сохранение произвольных файлов в файловой системе Android. Так как мы выяснили, что в вашем случае SharedPreferences вам не подходят, а базой данных вы по каким-то причинам не хотите воспользоваться, то рассмотрим вариант сохранение произвольных файлов в файловой системе Android. Для этого стоит воспользоваться объектом File который подходит для чтения или записи больших объемов данных в порядке от начала к концу без пропусков. Для того чтобы воспользоваться данным способом первоначально следует определиться где вы будете сохранять свой файл, во внутренней или внешней памяти. Свойства внутренней памяти: всегда доступно. сохраненные здесь файлы по умолчанию доступны только вашему приложению. при удалении пользователем вашего приложения система Android удаляет из внутренней памяти все файлы этого приложения. Свойства внешней памяти: доступно не всегда, потому что пользователь может в любое время подключать и отключать такие хранилища. такие хранилища доступны для чтения везде, поэтому вы не контролируете чтение сохраненных в них данных. при удалении пользователем вашего приложения система Android удаляет из внешних хранилищ файлы этого приложения, только если они сохраняются в директории с использованием getExternalFilesDir(). Рассмотрим вариант сохранения файла во внутренней памяти. При сохранении файла во внутреннюю память вы можете получить соответствующую директорию в виде File, вызвав один из двух методов: getFilesDir() - возвращает File, соответствующий внутренней директории приложения. getCacheDir() - возвращает File, соответствующий внутренней директории файлов временной кэш-памяти приложения. Для создания файла в одной из этих директорий можно использовать конструктор File(), который передает элемент File, предоставляемый одним из вышеприведенных методов, с помощью которого указывается директория во внутренней памяти. Например: File file = new File(context.getFilesDir(), filename); Кроме того, можно вызвать метод openFileOutput() для получения объекта FileOutputStream , производящего запись в файл во внутренней памяти. Вот пример записи текста в файл: String filename = "myfile"; String string = "Hello world!"; FileOutputStream outputStream; try { outputStream = openFileOutput(filename, Context.MODE_PRIVATE); outputStream.write(string.getBytes()); outputStream.close(); } catch (Exception e) { e.printStackTrace(); }

Комментариев нет:

Отправить комментарий