4

我想在用户点击主页按钮后立即安排本地通知。

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

  • applicationWillResignActive
  • applicationDidEnterBackground
  • 应用程序将终止

好吧,我想我不应该使用第三个,但是前两个有什么区别?

有没有办法区分被电话/其他通知打断和实际按下主页按钮?

提前致谢。

4

3 回答 3

7

要安排本地通知,您应该使用applicationDidEnterBackground而不是使用,applicationWillResignActive因为applicationWillResignActive每次应用程序收到一些特定的中断线路电话,短信时都会调用。您希望在用户按下主页按钮时安排通知,在这种情况下applicationDidEnterBackground是执行此操作的合适位置。

在使用之前应该记住的一件事applicationDidEnterBackground是这个委托有approximately five seconds to perform any task,如果这个委托中的任何任务需要更多时间,那么操作系统将终止你的应用程序。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/

于 2011-05-24T17:38:58.697 回答
2

您应该使用 applicationDidEnterBackground。

只要您的应用程序中断(例如电话或短信),就会调用 applicationWillResignActive。在这种情况下,如果用户忽略这些,那么您的应用程序将继续在前台运行。

applicationDidEnterBackground 仅在您的应用实际进入后台时才被调用。

于 2011-05-24T17:22:50.093 回答
2

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

  • 当用户点击主页按钮时,不会调用 applicationWillTerminate。通过应用程序切换,仅当用户明确退出应用程序或可能在内存不足的情况下才会发送此消息。

  • applicationWillResignActive 在应用程序被短暂中断时额外调用,例如通过短信或电话警报。(尽管如果用户随后切换到 Messages 或 Phone 应用程序,您的应用程序最终会收到 applicationDidEnterBackground 消息)。

所以听起来你对用户点击主页按钮并且应用程序进入后台的点特别感兴趣。applicationDidEnterBackground 就是这个地方。

您还可以始终安排本地通知,并且仅在应用程序未运行时才对其进行响应。不一定更好,只是一个可以考虑的选项。

于 2011-05-24T17:24:03.047 回答