Хотя, вы должны использовать onResume()
, чтобы изменить все, что вы хотите проверить, когда приложение возобновляет работу после приостановки на любое время.
Теперь, если вы действительно хотите проверить, сколько времени это было на самом деле приостановлено, я бы предпочел простой logi c, например:
Сохранить текущее время в SharedPreferences
, когда данные загружаются как
Date date = new Date(System.currentTimeMillis()); //or simply new Date();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
prefs.edit().putLong("Time", date.getTime()).apply();
В onResume()
рассчитайте разницу между текущим временем и сохраненным временем как
@Override
public void onResume(){
super.onResume();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
Date savedDate = new Date(prefs.getLong("Time", 0)); //0 is the default value
Date currentDate = new Date(System.currentTimeMillis());
long diff = currentDate.getTime() - savedDate.getTime(); //This difference is in milliseconds.
long diffInHours = TimeUnit.MILLISECONDS.toHours(diff); //To convert it in hours
// You can also use toMinutes() for calculating it in minutes
//Now, simple check if the difference is more than your threshold, perform your function as
if(diffInHours > 1){
//do something
}
}
Вы также можете использовать глобальную переменную вместо SharedPreferences
, чтобы сэкономить время при загрузке данных, но это может быть рискованно, поскольку оно может быть очищено системой.
Изменить: Кроме того, если вы хотите проверить разницу только между Pause и Resume, а не между загрузкой данных и Resume, тогда сделайте первый шаг в onPause()
.