【问题标题】:How can I make a service call in background while app is running ios如何在应用程序运行 ios 时在后台进行服务调用
【发布时间】:2016-12-15 12:17:40
【问题描述】:

任何人都知道。在用户与特定屏幕交互期间如何进行服务调用。我的意思是我需要在用户与应用程序交互时调用其他数据。但它看起来仍然像设备挂起。请帮帮我。

【问题讨论】:

  • 显示您的代码。
  • “但它看起来仍然像设备挂起” - 由此,我认为 OP 试图这样做。

标签: ios objective-c afnetworking nsurlconnection


【解决方案1】:

获取请求使用此代码

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager GET:@"http://example.com/resources.json" parameters:nil progress:nil success:^(NSURLSessionTask *task, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(NSURLSessionTask *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

NSURL *URL = [NSURL URLWithString:@"http://example.com/resources/123.json"];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager GET:URL.absoluteString parameters:nil progress:nil success:^(NSURLSessionTask *task, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(NSURLSessionTask *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

【讨论】:

    【解决方案2】:

    由于您没有提到任何代码 sn-p,我假设您正在 main 线程上执行所有操作,这就是您的应用挂起的原因。具体到main 线程和background 线程,我们在main 线程和background 线程上执行所有与UI 相关的任务。因此您可以为您的background 任务创建另一个线程像这样:

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        //Perform your background task here
    });
    

    【讨论】:

    • @Cristik 正如我已经提到的,提问者没有发布任何代码 sn-p,所以我无法确切知道该代码放在哪里。但我的回答包括问题背后的原因以及提问者可以放在适当位置的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多