【问题标题】:How to increase applicationDidEnterBackground in iPhone?如何在 iPhone 中增加 applicationDidEnterBackground?
【发布时间】:2012-10-06 07:16:09
【问题描述】:

我在applicationDidEnterBackground 中调用了一个api,但是applicationDidEnterBackground 方法在5 秒后返回,所以我怎么能增加计时器或者在api 完成之后只有applicationDidEnterBackground 会返回我们所有人建议使用beginBackgroundTaskWithExpirationHandler

但是我不知道怎么用,谁能指导我?

这是我的代码

- (void)applicationDidEnterBackground:(UIApplication *)application
{

    NSString *link=[NSString stringWithFormat:@"http://www.askpundit.com/dev/js_chat/getNewRequest.php?updateStatus=%@&clientid=%@",UpdateStatus,[self getSetting:@"Clientid"]]; 
    NSURLRequest *request=[[NSURLRequest alloc]initWithURL:[NSURL URLWithString:link]];  

    NSURLConnection *connaction=[[NSURLConnection alloc] initWithRequest:request delegate:self];

    if (connaction)
    {
        responsedata=[NSMutableData data];

        NSLog( @"Data Saved");

    }
} 

谁能指导我在通话结束后如何返回applicationDidEnterBackground

【问题讨论】:

    标签: iphone objective-c uiapplicationdelegate appdelegate


    【解决方案1】:

    如您所料,beginBackgroundTaskWithExpirationHandler 是您应该使用的。这很简单。这个 sn-p 进行了最低限度的校对,并且不完整 - 但演示了该方法。

    - (void)applicationDidEnterBackground:(UIApplication *)application {
        _completionTask = [application beginBackgroundTaskWithExpirationHandler:^{
            [application endBackgroundTask:_completionTask];
            _completionTask = UIBackgroundTaskInvalid;
        }];
        // begin your NSURLConnection, etc.
    }
    
    - (void)connectionDidFinishLoading:(NSURLConnection *)connection {
        if( _completionTask != UIBackgroundTaskInvalid ) {
             [application endBackgroundTask:_completionTask];
             _completionTask = UIBackgroundTaskInvalid;
    }
    

    【讨论】:

    • 嘿@NSBum 感谢您的回复是的,我得到了解决方案,感谢您回复我
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-10
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多