Каков наиболее эффективный способ хранения списка объектов констант в приложении для Android? Я хочу предоставить объекты в json / database, показать список объектов и поместить один из них в два действия: одно со списком, второе с динамическими фрагментами. Анализировать на первом обеде приложения из json в SharedPreference - хорошая идея или лучший способ - каждый раз получать список всех объектов из локальной базы данных?
Я хочу использовать его только для отображения определенного фрагмента объекта. Объект и список будут статичными.
Эти данные будут структурированы одинаково? И скажите мне, будут ли эти объекты сложными или простыми. Если данные будут сложными, я бы предложил использовать базу данных (например, SQLite), если данные будут иметь простую структуру (без ссылок), используйте SharedPreferences, потому что чтение происходит быстрее.
на основе ваших данных оба решения хороши, вы можете использовать SharedPreference или SQLite DataBase в своем приложении, но если ваши данные не такие сложные или такие большие, я предлагаю вам использовать SharedPreference и библиотеку Google Gson для преобразования ArrayList в String и сохранить результат в SharedPreference и конвертировать сохраненные данные в ArrayLists (я сохраняю свои данные во всех своих проектах, и он работает так хорошо), работать с SQLite сложнее, чем с SharedPreference, но у него есть некоторые преимущества при работе с большими или сложными данными.
Но как предоставить данные в приложение? Список должен содержать 55 небольших объектов с шестью полями.
вы хотите, чтобы эти данные были в вашем приложении, когда пользователь установил приложение?
Да, точно. Я хочу предоставить эти данные офлайн, внутри .apk.
для этого вы можете сохранить данные в виде строки в текстовом файле в папке с ресурсами, а после открытия приложения от пользователя вы можете прочитать этот файл как строковый файл, преобразовать его в json с библиотекой Gson и сохранить их в SharedPreference.
Если данные не слишком сложные и не слишком много объектов, вы также помещаете их в статический класс.
public class Data {
public static List<Data> DATA = new ArrayList<>() {{
add(new Data("Foo", 42, 3.1415)),
add(new Data("Bar", 123, 2.718))
}};
public String string;
public int i;
public double d;
public Data(String string, int i, double d) {
this.string = string;
this.i = i;
this.d = d;
}
}
и используйте это так:
...
for(Data d : Data.DATA) {
System.out.println(d.string);
}
55 объектов с шестью полями. Я не знаю, использовать ли для них статический класс, если хорошо, подумайте о написании чистого и хорошего кода.
Вы можете использовать базу данных sqlite и использовать Комната. Он довольно аккуратный, имеет хорошую читаемость и не займет много времени, чтобы внедрить его в ваш проект. Некоторые могут возразить, что с точки зрения передовой практики было бы более уместным поместить данные, которые вы описываете, в локальную базу данных вместо использования общих предпочтений.
Это зависит от того, что вы хотите делать с этими объектами, и являются ли они статичными или изменяющимися.