应用程序发送到后台时执行NSLog

时间:2013-12-02 05:54:45

标签: ios iphone objective-c

我正在尝试做一项看似简单的任务。当用户将我的应用程序发送到后台时,我想让NSLog说“应用程序发送到后台”。我正在尝试使用像What's the best way to detect when the app is entering the background for my view?这样的NSNotificationCenter,但我无法让它工作。

当用户将应用程序发送到后台时,是否无法立即执行操作?任何帮助都会很棒!

谢谢!

3 个答案:

答案 0 :(得分:2)

您可以在

的方法中使用NSLog
- (void)applicationDidEnterBackground:(UIApplication *)application

您的AppDelegate.m文件。

您可以在哪里发送任何任务的NSNotification。当应用在后台时,您无法执行任何任务。

答案 1 :(得分:1)

您需要在AppDelegate中实施以下方法:

- (void)applicationDidEnterBackground:(UIApplication *)application {
    NSLog(@"app sent to background");
}

Apple的文档:

  

此方法的实现大约需要五秒钟   执行任何任务并返回。如果您需要额外的时间来执行   任何最终任务,您都可以从中请求额外的执行时间   系统通过调用beginBackgroundTaskWithExpirationHandler:。

答案 2 :(得分:0)

您可以在iOS7之前进行10分钟的后台活动,例如将某些内容保存到您的服务器,但为了在后台活动即将关闭时结束,您需要在- (void)applicationDidEnterBackground:(UIApplication *)application

     - (void)applicationDidEnterBackground:(UIApplication *)application

{

    bgTask = [application beginBackgroundTaskWithExpirationHandler:^{

        // Clean up any unfinished task business by marking where you

        // stopped or ending the task outright.

        [application endBackgroundTask:bgTask];

        bgTask = UIBackgroundTaskInvalid;

    }];



    // 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, preferably in chunks.



        [application endBackgroundTask:bgTask];

        bgTask = UIBackgroundTaskInvalid;

    });

}

For more detail look here

摘要是

  1. 你的 - (void)applicationDidEnterBackground :( UIApplication *)应用程序方法必须在5秒内返回,否则你的应用程序将被清除。
  2. 您可以如何使用上述方法要求更多时间,实践中允许的时间为10分钟