控制应用程序从后台返回时刷新的时间

时间:2012-10-12 05:38:45

标签: iphone objective-c ios

这是关于应用从后台返回时实际发生的事情的一个相当普遍的问题。我有一个用户告诉我,在打开我的应用程序时,他已经有一天没用了,他仍然会看到他在关闭应用程序之前的相同视图(“关闭”我的意思是他只是按下主页按钮将其发送到后台,不要按住,然后点击十字按钮完全终止应用程序。

我的印象是,如果一个应用程序在很长一段时间后从后台恢复,它将被完全重新加载(显示启动画面和所有内容),就像我没有打开facebook或gmail应用程序的情况一样用了一段时间。

所以我的问题是,我是否必须在自我的应用程序发送到后台后的某段时间内执行检查,并在超过某个阈值时重置所有内容,或者应该由iOS本身处理...当然,如果用户将我的应用程序发送到后台并在2分钟后返回,我就不想刷新

2 个答案:

答案 0 :(得分:2)

您可能需要通过设置时间戳来在appdelegate方法中处理它。由于在iPhone中启用了多任务处理,因此它将再次从同一屏幕启动。应用程序可以在后台很长时间,直到用户决定终止应用程序。

一些委托方法是

- (void)applicationWillResignActive:(UIApplication *)iApplication;
- (void)applicationDidEnterBackground:(UIApplication *)iApplication;
- (void)applicationWillEnterForeground:(UIApplication *)iApplication;
- (void)applicationDidBecomeActive:(UIApplication *)iApplication;

如果要禁用多任务处理,可以通过在应用程序plist中设置UIApplicationExistsOnSuspend键来实现。但是当用户按下主页按钮时,这将使应用程序立即退出。

答案 1 :(得分:1)

关于您的应用在后台运行一段时间后是否应该刷新的决定完全取决于您和您的应用的需求。一个应用程序可以在后台工作数周,而不会被操作系统杀死。或者它可以在进入后台后几秒钟被杀死。这完全取决于其他正在运行的应用程序所需的资源。

例如,如果您希望应用程序中的逻辑使其在24小时后重新启动,那么您可以编写代码来处理此问题。应用程序进入后台时保存时间戳。当它返回到前台时,将当前时间与保存的时间戳进行比较。如果已经过了足够的时间,您需要更新UI以反映您想要向用户显示的所需状态。