当前位置: 首页 > 知识库问答 >
问题:

在后台继续下载

虞滨海
2023-03-14

我正在创建一个应用程序,其中我从服务器下载一些数据。在后台运行时,我希望连接应该继续运行,以便可以下载数据。我知道在app里有方法

- (void)applicationDidEnterBackground:(UIApplication *)application  

当应用程序进入后台时调用。但由于连接是在viewController中创建的,如何在appDelegate中管理它
还有其他方法可以做到这一点吗?我已经通过了这个链接,但是有一个简单的实现方法吗?

共有3个答案

徐承载
2023-03-14

我不知道你到底是怎么处理数据下载的。但是你可以看看AsitpRequest。它非常简单明了,如果将编译器标志设置为-fno-objc-ARC,则可以使用ARC。有了这个,你只需要使用

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setShouldContinueWhenAppEntersBackground:YES]; //For iOS 4.0 and up 

这很有效。

在这里,您可以看到ASIHTTPRequest是如何工作的

希望有帮助!

百里伟
2023-03-14

[编辑]很抱歉,我错了,正如评论中指出的那样,您可以将执行操作的时间限制延长一次/在您的应用程序进入后台之前。这是苹果公司的官方文件

张光辉
2023-03-14

在后台继续执行某些操作的一种方法是创建一个单独的线程来进行下载。在线程内部,在调用beginBackgroundTaskWithExpirationHandler:和endBackgroundTask之间插入下载操作。您不需要检查是否在后台运行,只需始终调用这两个方法即可。

// Tell iOS this as a background task in case we get backgrounded
UIBackgroundTaskIdentifier taskId = [[UIApplication sharedApplication] 
          beginBackgroundTaskWithExpirationHandler:NULL];

//----------------------------------------------
// Perform your download operations here
//----------------------------------------------
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

// Tell iOS that we are done with stuff that needed to keep going even if backgrounded    
[[UIApplication sharedApplication] endBackgroundTask:taskId];
 类似资料:
  • 我是RxJava的新手。我有一个,用于下载图像URL列表并将其转换为位图的简单网络操作。 在活动的上,我取消订阅可观察到的以避免内存泄漏。 我能看到的是,如果我在图像下载过程中退出活动,后台任务也会被终止。我只想继续做背景工作,即使我已经取消了《观察家》的订阅。有可能吗?

  • 问题内容: 在 puppeteer中, 我想等待定义的时间后再转到下一行代码。 我尝试将a 放入评估函数中,但似乎只是被忽略了 此代码不等待,仅 在等待之前 和 之后 编写 __ 你知道怎么做吗? 问题答案: 您可以使用一点承诺功能, 然后,在需要延迟的任何时候调用它。 如果必须使用操纵符,请使用内置的waitFor函数。 如果仍然要使用page.evaluate,请在4​​秒钟后解决。您没有解决

  • 问题内容: 我有一个JavaScript代码,需要向其中添加睡眠/等待功能。我正在运行的代码已经在一个函数中,例如: 我听说可能的解决方案可能包括 但我不确定在这种情况下如何使用它。 我不能使用PHP,因为我的服务器不支持PHP,尽管使用jQuery可以。 问题答案: JS没有睡眠功能,它具有 setTimeout() 或setInterval() 函数。 如果您可以将暂停后需要运行的代码移到回调

  • 问题内容: 是否有可能继续进行后? 除了检索引发异常的行的ID,然后重新启动忽略该ID,我看不到该怎么做。 我正在使用Oracle数据库10。 问题答案: 您可以使用error_logging_clause进行此操作。(该链接用于插入内容,因为在MERGE的文档中,它表示其行为与插入内容相同。 对于您的情况: 请注意,error_logging_clause有一些限制。从文档中: 以下情况导致该语

  • 我有一个列表,我想用流过滤,抓取前10个,并显示给用户。按下按钮后..我想从那个位置继续流。 但问题是,这里我不得不在第一个10+多个不匹配的过滤器上运行过滤器(再次)。

  • 问题内容: 当出现内部可观察到的错误(Ajax请求)时,RxJs停止侦听单击事件。我试图弄清楚如何使事件侦听器挂接到按钮click事件并优雅地处理内部ajax错误。 这是我的示例代码和指向plunkr的链接 http://plnkr.co/edit/NGMB7RkBbpN1ji4mfzih 问题答案: 您可以使用运算符(或别名)来捕获和处理可观察对象中发生的错误,以便不会将错误通知给订户。 忽略错