gpt4 book ai didi

ios - 当iOS应用程序进入后台状态时启动线程

转载 作者:行者123 更新时间:2023-11-29 04:06:12 27 4
gpt4 key购买 nike

我有一个要求,当应用程序进入后台状态时,我需要创建并启动线程。 Created Thread的功能是从本地DB获取数据并上传到服务器,我不需要对UI进行任何更新。我的问题是:

  1. 我到底应该在哪里创建线程 - 在 applicationWillResignActive 方法中还是在 applicationDidEnterBackground 中?
  2. 这是创建线程的最佳方式 - 方式还是 GCD 或 Posix 方式?

我尝试过的事情

  1. 我已经在 Android 上工作过,所以我知道如何实现这个场景,但我是 iOS 新手,所以一开始我有点困惑。
  2. 我刚刚尝试了 NSThread 概念,但它不起作用。以下是我据我所知编写的代码:

    - (void)applicationWillResignActive:(UIApplication *)application {
    [NSThread detachNewThreadSelector:@selector(FetchReportFromDBAndUpload) toTarget:self withObject:nil];
    }

    - (void)FetchReportFromDBAndUpload {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    //Check for internet connection and fetch data from DB and upload to server
    [pool release];
    }

这是创建线程的正确方法,还是我需要做一些更改?如果没有,请指导我如何实现这一目标。提前致谢

最佳答案

您必须从 AppDelegate 的 applicationDidEnterBackground: 方法调用 UIApplication 类的 beginBackgroundTaskWithExpirationHandler: 方法。此方法将您的任务标记为后台任务,以便当应用程序进入后台状态时系统不会终止它。 (请注意,与 VoiceIP、播放音乐、GPS 跟踪无关的后台任务仍然限制在大约 10 分钟的后台执行时间,即它们不会永远运行。)

以下是更详细的信息和代码示例:http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html

关于ios - 当iOS应用程序进入后台状态时启动线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15174555/

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