后台:我在Application类中转储一些数据,并在短暂的间隔后或应用程序转到后台时(例如,当用户按下Home按钮或任务时)将其保存到文件中-switcher按钮)。我不想使用Activity类的onPause(),因为应用程序中有很多活动,我必须检查所有这些活动的onPause()。当我在我的应用程序中从一个活动跳转到另一个活动时,也会调用onPause(这会创建不必要的保存操作)。
问题:当应用程序转到后台时,是否会触发一个通用事件,无论它处于哪个活动状态?
由于
答案 0 :(得分:1)
连续检查以下代码意味着你可以使用Timer类。
ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
List<RunningTaskInfo> runningTasks = null;
try {
runningTasks = activityManager.getRunningTasks(1);
} catch (Exception e) {
}
RunningTaskInfo runningTaskInfo = runningTasks.get(0);
ComponentName topActivity = runningTaskInfo.topActivity;
if(topActivity.getPackageName().equals(your packagename)){
S.o.p("fine");}
else{
S.o.p.("application sent to background");}
答案 1 :(得分:0)
onStop()
。 onPause()
仅在隐藏Activity
时使用,即由于某些重叠而部分可见。当然,在onPause()
被调用之前调用onStop()
。您可以在Android Developers查看所有生命周期。我鼓励你使用生命周期,而不是反对它。状态改变时保存数据。
对于预定的数据存储,我建议您使用计时器。当您将所有数据提交到应用程序上下文,并且您可以使用较少的恢复点时,我建议将日期存储在onDestroy()
调用中。如果没有,我建议您实施TimerTask
来安排定期的数据序列化。
要回答你的问题,不! Android总是考虑您的应用程序并且只有一个生命周期。每个活动有一个生命周期,所有活动都按堆栈和它们各自的生命周期联系在一起。