如果暂停时间过长,我该如何刷新我的应用程序
How can I refresh my app if it was paused for too long
我正在开发一个使用 api 的 android 应用程序。该应用调用 api 并存储信息。但是当应用程序暂停并在很长一段时间后恢复时,信息可能不再有效。如何查看应用程序暂停的时间段以刷新信息。
像 "refresh if the app is paused for an hour and is then resumed".
这样的东西
尽管如此,您应该使用 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
来节省数据加载时间,但这可能存在风险,因为它可能会被系统清除。
编辑:此外,如果您只想检查暂停和恢复之间的区别,而不是数据加载和恢复之间的区别,请执行 onPause()
中的第一步。
我正在开发一个使用 api 的 android 应用程序。该应用调用 api 并存储信息。但是当应用程序暂停并在很长一段时间后恢复时,信息可能不再有效。如何查看应用程序暂停的时间段以刷新信息。 像 "refresh if the app is paused for an hour and is then resumed".
这样的东西尽管如此,您应该使用 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
来节省数据加载时间,但这可能存在风险,因为它可能会被系统清除。
编辑:此外,如果您只想检查暂停和恢复之间的区别,而不是数据加载和恢复之间的区别,请执行 onPause()
中的第一步。