#android #kotlin
#Android #kotlin
Вопрос:
Я думаю, как лучше всего сохранить age
пользователя из 2 переменных даты рождения: YEAR
и DAY_OF_YEAR
. Поскольку age
это динамическая переменная, я хочу, чтобы создание age
переменной вызывалось только один раз, поскольку я не хочу вызывать функцию каждый раз, когда я хочу обратиться к age
в одном и том же сеансе пользователя.
Затем, когда пользователь закрывает приложение и снова открывается, я хочу, чтобы его age
инициализировали снова, если они age
изменились.
Итак, как я могу сохранить age
для сеанса пользователя, а затем инициализировать его снова, как только приложение снова откроется?
Комментарии:
1. Сохраните значение в общих настройках, а когда ваше приложение откроется, проверьте, совпадает ли возраст с тем, что указан в общих настройках, и продолжите или перепишите настройки, если возраст изменился.
Ответ №1:
Использовать «статическую» переменную
private static int myValue;
public static int getMyValue() {
return myValue;
}
public static void setMyValue(int myValue) {
MyActivity.myValue = myValue;
}
Статические значения будут храниться только до тех пор, пока приложение открыто
каждый раз, когда вам нужно установить новое значение, вы вызываете setMyValue()
Ответ №2:
Прежде всего, вычислите возраст в классе приложения и сохраните его в общих настройках и используйте его везде, где захотите, из общих настроек. Также проверьте в классе приложения, совпадает ли вычисляемый возраст и возраст в общих настройках или нет, если это то же самое, нет необходимости обновлять настройки, иначе обновлять общие настройки.
Предположим, что название вашего метода вычисления возраста — calculateAge(),
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
int age = calculateAge();
if (a != getAge()) {
saveAge(this, a);
}
}
int calculateAge() {
return age;
}
public static void saveAge(Context context, String lang, int age) {
SharedPreferences sharedPref = context.getSharedPreferences(quesID, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt("age", age);
editor.apply();
}
public static int getAge(Context context) {
SharedPreferences sharedPref =
context.getSharedPreferences(context.getString(R.string.filename),
Context.MODE_PRIVATE);
return sharedPref.getInt("age", 0);
}
}
а чтобы использовать возраст в любом месте приложения, используйте App.getAge();
Комментарии:
1. К сожалению, существует несколько переменных возраста (для разных пользователей), поэтому я не могу сохранить их в SharedPref .
2. Это Java? Этот вопрос адресован Kotlin.
3. В этом случае сохраните их в базе данных SQLite и сделайте идентификатор пользователя в качестве первичного ключа для хранения и извлечения сведений о возрасте. и вы могли бы использовать the room для простой реализации того же самого.