Сохранять данные переменной, пока пользователь не закроет приложение? - PullRequest
0 голосов
/ 30 марта 2019

Я думаю, как лучше сохранить age пользователя из 2 переменных даты рождения: YEAR и DAY_OF_YEAR.Поскольку age является динамической переменной, я хочу, чтобы создание переменной age вызывалось только один раз, поскольку мне не нужно вызывать функцию каждый раз, когда я хочу сослаться на age в том же сеансе пользователя.

Затем, когда пользователь закрывает приложение и открывает снова, я хочу, чтобы age снова инициализировалось, если его age изменилось.

Так, как я могу сохранить age для пользовательского сеанса и затем снова инициализировать его после повторного открытия приложения?

Ответы [ 2 ]

0 голосов
/ 30 марта 2019

Прежде всего, рассчитайте возраст в классе приложения и сохраните его в общих настройках и используйте его в любом месте из общих настроек. Также проверьте в классе приложения, является ли рассчитанный возраст и возраст в общих предпочтениях одинаковыми или нет, если они одинаковы, нет необходимости обновлять предпочтения, иначе обновите общие предпочтения.

Предположим, что имя вашего метода расчета возраста - figureAge (),

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 ();

0 голосов
/ 30 марта 2019

Использовать переменную "Static"

private static int myValue;

public static int getMyValue() {
    return myValue;
}

public static void setMyValue(int myValue) {
    MyActivity.myValue = myValue;
}

Статические значения будут храниться только до тех пор, пока приложение открыто

каждый раз, когда вам нужно установить новое значение, вы вызываете setMyValue ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...