Сохранение объектов в Android

204
13 октября 2017, 13:37

Добрый день!

В андроиде я новичек от слова "совсем"(как и в Java). Начал писать первое, что пришло в голову - книгу с рецептами. Суть в том, что на главном экране расположен ListView с заголовками и кнопка "добавить". При нажатии на "добавить", открывается другое активити, в котором вводится название рецепта и его описание. Из этих данных создается новый объект:

public class Recipe implements Parcelable{
private String recipeName;
private String recipeDescriptions;
public Recipe(String recipeName, String recipeDescriptions) {
    this.recipeName = recipeName;
    this.recipeDescriptions = recipeDescriptions;
   }
} //дальше реализация Parcelable

При нажатии на Item в ListView должно происходить редактирование этого рецепта. На данный момент реализовано новое Activity, в которое передаются recipeName и recipeDescriptions и заносятся в соответствующие EditText'ы. Все редактируется и сохраняется прекрасно. Однако, когда встал вопрос о сохранении объектов, для их восстановления при загрузке приложения, меня просто заклинило. Неужели тут нельзя обойтись без БД? Я думаю, что меня понесло не в ту степь.

Подскажите, пожалуйста, как правильнее всего реализовать хранение и восстановление при загрузке? Может быть мне нужно полностью пересмотреть концепцию приложения и все делать каким-либо другим способом? Может вовсе не нужно делать класс Recipe, а все делать String'ами?

Answer 1

Есть 4 варианта:

  1. Сохранять данные в SharedPreferences - способ для бедных, когда надо сохранять чуть-чуть и немного
  2. Самый правильный способ сохранять в БД, стандартный в SQLite более моднявый способ через Realm
  3. Можно использовать различные облачные варианты - самый родной для Android облачный сервис FireBase
  4. Есть и четвертый вариант, воспользоваться стандартным механизмом Java реализуемым через интерфейс Serializable чтение/запись через ObjectInputStream/ObjectOutputStream - с записью на внешний файл в Context.getFilesDir() - не рекомендую.