【问题标题】:How to implement Task completion如何实现任务完成
【发布时间】:2011-05-26 08:24:25
【问题描述】:

任务完成——应用程序可以请求系统额外的时间来完成给定的任务。

我正在使用这种方法完成任务,

- (void)applicationDidEnterBackground:(UIApplication *)application 
{
    UIApplication  *app = [UIApplication sharedApplication];
    bgTask = [app beginBackgroundTaskWithExpirationHandler:^
    { 
         NSLog(@"This is Testing");

        [app endBackgroundTask:bgTask]; 

        bgTask=UIBackgroundTaskInvalid;
    }];
}

但是我没有从这个方法中得到任何输出。任何人都告诉我,我做错了什么。你能告诉任何最好的方法来实现任务完成。

问候,

Arunkumar.P

【问题讨论】:

    标签: iphone cocoa ios ios4 multitasking


    【解决方案1】:

    您正在设置过期处理程序,但您实际上并没有在后台执行任何操作。看起来您上面的代码是从 iOS 应用程序编程指南的 Executing Code in the Background 部分复制的。该示例中的下一段代码是:

    // 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.
    
        [app endBackgroundTask:bgTask];
        bgTask = UIBackgroundTaskInvalid;
    });
    

    在达到时间限制(10 分钟,我上次检查)之前,不会调用过期处理程序;您在异步调度的任务中完成工作,而不是在过期处理程序中。

    【讨论】:

      【解决方案2】:

      这解决了我的问题:Easy Background Tasks In IOS 4

      主要思想是调度异步执行代码,它什么都不做,但允许您当前的代码继续运行。

      希望它也能解决你的问题!

      【讨论】:

      • 链接已失效。这就是你应该总结问题的原因。请编辑答案,以便我们了解解决方案的要点。它肯定会使这个答案更有用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多