Дни прохождения приложения Android

1

Может ли кто-нибудь сказать мне простой способ отслеживать, прошел ли день с момента открытия Activity? Кроме того, сделайте что-нибудь, если прошло, а что-то, если нет. Спасибо!

Это мой код. Я получаю исключения этого класса, как будто я хочу сохранить int в long и не знаю, где.

    Calendar calendar = Calendar.getInstance();       
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

    long aux_time = prefs.getLong("AUX", -1);
    int aux_day= prefs.getInt("DAY", -1);

    if(System.currentTimeMillis()!=aux_time&&calendar.get(Calendar.DAY_OF_WEEK)!=aux_day)
    {  
        ... // Open "Not allowed Activity"
    }

    else            
    {

    SharedPreferences.Editor editor = prefs.edit();
    editor.putLong("AUX", System.currentTimeMillis());
    editor.putInt("DAY", calendar.get(Calendar.DAY_OF_WEEK));
    editor.commit();
    ... //  Open Activity            

}

Любые мнения?
EDIT: Ах, об этом исключении класса Int, забыл очистить редактор. Кроме того, код все еще не работает.

  • 0
    Вы имеете в виду что-то вроде "х дней с тех пор, как вы меня в последний раз запускали". ?
  • 0
    В конце я хочу создать приложение, которое позволит пользователю делать что-то с ограничением в 1 открытие в день. Итак, мне нужен код, который будет видеть, можно ли открыть действие (которое нужно открывать только один раз в день) в это время или нет. Если да, продолжайте, если нет, приходит другое действие.
Показать ещё 1 комментарий
Теги:

3 ответа

1

Вот простой способ сделать это... вы были близки, но некоторая логика ошибочна.

{ 
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    SharedPreferences.Editor prefsEditor = prefs.edit();

    long savedDate = prefs.getLong(PreferenceKeys.SAVED_DATE, System.currentTimeMillis());
    if ((savedDate + (24 * 60 * 60 * 1000)) < System.currentTimeMillis()) {

         prefsEditor.putLong(Constants.PREF_SERVER_BATCH_TIME, currentTime);

        // 24 hours has passed...your code here.

    }
}
0

всякий раз, когда вы открываете это действие (в oncreate()) добавляете значение для sharedpreferences с информацией о текущем дне/дате или времени (если хотите отслеживать 24 часа вместо дня), используя System.currentTimeMillis().

Перед тем, как сохранить эту проверку, убедитесь, что если этот раз (этот день) еще не сохранен и продолжит соответственно.

  • 0
    Отредактировано там. Пожалуйста, посмотрите.
  • 0
    пожалуйста, отправьте stacktrace .... всегда, когда вы получаете какую-то ошибку
0

Должно быть так же просто, как использовать SharedPreferences для хранения и извлечения System.currentTimeMillis(). Если вам нужно знать день, а не 24 часа, вам просто нужно будет использовать дату

  • 0
    Это то, что я пытаюсь сделать сейчас. Я думаю, что мне понадобится If с двумя условиями (если currentTime <сохраненное время и если текущий день! = Сохраненный день)
  • 0
    Ааа, до сих пор не могу узнать, как это сделать. Может кто-нибудь помочь мне с кодом?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню