主页button按下,我应该使用哪个AppDelegate方法来调度本地通知

只要用户点击主页button,我想安排一个本地通知。

在这种情况下,我应该使用哪种App委托方法:

  • applicationWillResignActive
  • applicationDidEnterBackground
  • applicationWillTerminate

那么我想我不应该使用第三个,但前两个之间的区别是什么?

有没有什么办法可以区分通过电话/其他通知中断和实际按下主页button?

提前致谢。

要安排本地通知,请使用applicationDidEnterBackground代替使用applicationWillResignActive因为applicationWillResignActive每次调用应用程序获得特定的中断线电话短信时都会调用。 当用户按回家button时,你想安排通知,在这种情况下applicationDidEnterBackground是适当的地方做这个。

在使用applicationDidEnterBackground之前应该记住的一件事是,这个委托有approximately five seconds to perform any task ,如果这个委托中的任何任务需要更多的时间,那么os将终止你的应用程序。 您还可以使用beginBackgroundTaskWithExpirationHandler请求额外的执行时间,然后使用辅助线程执行任务。 有关应用程序代表的更多详细信息,请参阅链接 –

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html

http://www.cocoanetics.com/2010/07/understanding-ios-4-backgrounding-and-delegate-messaging/

你应该使用applicationDidEnterBackground。

applicationWillResignActive会在您的应用程序中断时被调用,例如电话或SMS消息。 在这种情况下,如果用户忽略这些,那么你的应用程序将继续在前台运行。

applicationDidEnterBackground只在你的应用程序实际进入后台时被调用。

您应该在applicationDidEnterBackground中执行此操作:

  • 当用户点击主页button时,applicationWillTerminate将不会被调用。 随着应用程序切换,这只是当用户明确退出应用程序或可能在低内存的情况下发送。

  • 当应用程序短暂中断时,applicationWillResignActive被另外调用,例如通过SMS或电话警报。 (虽然如果用户然后切换到消息或电话应用程序,您的应用程序将最终得到applicationDidEnterBackground消息)。

所以这听起来像你特别感兴趣的点,当用户点击主页button和应用程序去背景。 applicationDidEnterBackground是地方。

您也可以始终安排本地通知,只有在应用程序未运行时才会对其进行响应。 不一定更好,只是一个select考虑。