0

背景:我在 Application 类中转储了一些数据,并在短时间内或应用程序进入后台时(例如,当用户按下 Home 按钮或 Task-switcher 按钮时)将其保存到文件中。我不想使用 Activity 类的 onPause(),因为应用程序中有很多活动,我必须检查所有活动的 onPause()。当我在我的应用程序中从一个活动跳转到另一个活动时,也会调用 onPause(这会创建不必要的保存操作)。

问题:当应用程序进入后台时是否会触发一个通用事件,无论它处于哪个活动?

谢谢

4

2 回答 2

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");}
于 2014-01-15T06:38:48.013 回答
0

onStop()当活动从视图中隐藏时调用,即用户按下主页按钮。onPause()仅在 anActivity被隐藏时使用,即由于某些重叠而部分可见。当然,onPause()在被调用之前onStop()被调用。您可以在Android Developers中查看所有生命周期。我会鼓励你使用生命周期而不是反对它。当状态改变时保存你的数据。

对于预定的数据存储,我建议您使用计时器。当您将所有数据提交到应用程序上下文时,您可以使用更少的恢复点,我建议将日期存储在onDestroy()调用中。如果没有,我建议实施 aTimerTask来安排数据的定期序列化。

回答你的问题,不!完全考虑您的应用程序并具有一个生命周期根本不是Android。每个活动都有一个生命周期,所有活动都通过堆栈及其各自的生命周期联系在一起。

于 2014-01-15T06:43:31.583 回答