Может ли кто-нибудь сказать мне простой способ отслеживать, прошел ли день с момента открытия 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, забыл очистить редактор. Кроме того, код все еще не работает.
Вот простой способ сделать это... вы были близки, но некоторая логика ошибочна.
{
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.
}
}
всякий раз, когда вы открываете это действие (в oncreate()) добавляете значение для sharedpreferences с информацией о текущем дне/дате или времени (если хотите отслеживать 24 часа вместо дня), используя System.currentTimeMillis()
.
Перед тем, как сохранить эту проверку, убедитесь, что если этот раз (этот день) еще не сохранен и продолжит соответственно.
Должно быть так же просто, как использовать SharedPreferences для хранения и извлечения System.currentTimeMillis()
. Если вам нужно знать день, а не 24 часа, вам просто нужно будет использовать дату