gpt4 book ai didi

ios - 需要有关iOS后台执行的帮助

转载 作者:行者123 更新时间:2023-12-01 20:18:35 25 4
gpt4 key购买 nike

我以模态形式显示的ViewController具有一个保存按钮,该按钮将数据保存在数据库中,然后unwind成为ViewController

我还从notification中发布了applicationDidEnterBackground来调用save method,因此,如果用户未点击保存按钮并点击iPhone home button,则用户数据已保存。

就像苹果的Doc建议

- (void)applicationDidEnterBackground:(UIApplication *)application
{
bgTask = [application beginBackgroundTaskWithName:@"MyTask" expirationHandler:^{
// Clean up any unfinished task business by marking where you
// stopped or ending the task outright.
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];

// Start the long-running task and return immediately.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

// Do the work associated with the task, preferably in chunks.

[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
});
}

问题1:
我的任务不是很长,要花几秒钟的时间在 DB中保存几百行,是否仍然需要将 dispatch_async放入其中?

问题2:
用户可以点击保存按钮,然后立即点击iPhone主屏幕按钮,在这种情况下,我的保存方法将被调用两次,这对我的应用程序不利,我应该使用 dispatch_once还是其他方法?

问题3
苹果文档说:

未能为后台任务调用endBackgroundTask:方法
将导致您的应用终止。如果您提供了
启动任务时的过期处理程序,系统会调用
处理程序,并为您提供最后的机会来结束任务并避免
终止。
  • 如果我的应用程序正在运行并且未调用endBackgroundTask:,iOS会使应用程序崩溃吗?
  • avoid termination是什么意思,如果我的应用程序在后台运行并且任务也完成了,iOS仍将保持我的应用程序运行并阻止其终止?

  • 问题4
    使用此 backgroudtask进入后台后,我的应用程序将保持运行多长时间?因为苹果在评论中提到 // Start the long-running task and return immediately.

    最佳答案

    问题1

    如果您的操作少于5秒(根据Documentation),则可以在没有beginBackgroundTaskWithNamedispatch_async的情况下进行操作,但是您必须考虑该数据是否会随着时间增加,如果这样的话,最好这样做与beginBackgroundTaskWithNamedispatch_async

    问题2

    我要做的是在NSUserDefaults中存储有关保存操作的标志,因此,如果保存操作仍在进行中,则可以避免尝试再次保存它。

    问题3

    1.-如前所述,您的应用将被终止并从内存中清除,因为您不再需要资源时仍会占用资源。

    2.-通常,当用户离开您的应用程序时,如果您启用了该模式,您的应用程序仍可以不时在后台运行某些操作,或者响应于推送通知。但是,如果您的应用被用户或操作系统终止,那么您将无法

    问题4

    遗憾的是,文档中没有关于它的规范,但是如果您使用beginBackgroundTaskWithName,您可以放心地超过5秒。

    希望这能消除任何疑问。

    干杯

    -----编辑1 -----

    如@ Paulw11所述,对于问题4 ,“当前为3分钟,您可以检查UIApplication属性backgroundTimeRemaining以确定还剩多少时间。”

    关于ios - 需要有关iOS后台执行的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36088312/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com