【问题标题】:controlling when app will refresh when returning from background控制从后台返回时应用程序何时刷新
【发布时间】:2012-10-12 05:38:44
【问题描述】:

这是一个相当笼统的问题,关于应用从后台返回时实际发生的情况。我有一个用户告诉我,在打开我超过一天未使用的应用程序时,他仍然会看到与关闭应用程序之前相同的视图(“关闭”是指他只是按下主页按钮)将其发送到后台,而不是按住然后点击十字按钮以完全终止应用程序)。

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

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

【问题讨论】:

    标签: iphone objective-c ios


    【解决方案1】:

    您可能必须通过设置时间戳在您的 appdelegate 方法中处理该问题。由于 iPhone 中启用了多任务处理,因此它将再次从同一屏幕开始。一个应用程序可以在后台运行很长时间,直到用户决定终止该应用程序。

    一些委托方法是

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

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

    【讨论】:

    • 这就是我的想法,如果我必须手动进行,我只是想知道是否有一些内置设置需要调整,因为在 facebook 和 gmail 应用程序的情况下,当一段时间时间过去了,我重新打开了应用程序,他们的启动画面会显示出来,这让我想知道实际上有一个内置设置来控制这种行为。我知道当阈值时间戳已经过去时,我也可以为启动屏幕显示代码,但再次想知道是否有一种简单的方法可以让我不知道:)
    • 很遗憾没有。这是一个略有不同的问题和答案。 stackoverflow.com/questions/4282097/…
    【解决方案2】:

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

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

    【讨论】:

    • 这就是我的想法,如果我必须手动进行,我只是想知道是否有一些内置设置需要调整,因为在 facebook 和 gmail 应用程序的情况下,当一段时间时间过去了,我重新打开了应用程序,他们的启动画面会显示出来,这让我想知道实际上有一个内置设置来控制这种行为。我知道当阈值时间戳已经过去时,我也可以为启动屏幕显示代码,但再次想知道是否有一种简单的方法可以让我不知道:)
    • 不,没有办法表明您的应用程序应该在一段时间后终止。你要么表明你的应用程序应该立即终止,要么你选择永远坐在后台,或者直到操作系统决定你挡路并需要被杀死。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多