我正在开发一个使用api的android应用。该应用调用api并存储信息,但当该应用长时间暂停和恢复时,当时的信息可能不再有效。但是,当应用程序暂停后,在很长一段时间后恢复,信息可能不再是有效的时间。如何检查应用暂停的时间,以便刷新信息,比如 "如果应用暂停一小时后又恢复,则刷新"。
虽然,你应该使用 onResume()
来改变任何你想检查的东西,当应用程序暂停任何时间后恢复时。
现在,如果你真的想检查它到底暂停了多少时间,我更喜欢这样的简单逻辑。
把当前时间保存在 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()
.