主页button按下,我应该使用哪个AppDelegate方法来调度本地通知
只要用户点击主页button,我想安排一个本地通知。
在这种情况下,我应该使用哪种App委托方法:
- applicationWillResignActive
- applicationDidEnterBackground
- applicationWillTerminate
那么我想我不应该使用第三个,但前两个之间的区别是什么?
有没有什么办法可以区分通过电话/其他通知中断和实际按下主页button?
提前致谢。
要安排本地通知,请使用applicationDidEnterBackground
代替使用applicationWillResignActive
因为applicationWillResignActive
每次调用应用程序获得特定的中断线电话短信时都会调用。 当用户按回家button时,你想安排通知,在这种情况下applicationDidEnterBackground
是适当的地方做这个。
在使用applicationDidEnterBackground
之前应该记住的一件事是,这个委托有approximately five seconds to perform any task
,如果这个委托中的任何任务需要更多的时间,那么os将终止你的应用程序。 您还可以使用beginBackgroundTaskWithExpirationHandler
请求额外的执行时间,然后使用辅助线程执行任务。 有关应用程序代表的更多详细信息,请参阅链接 –
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考虑。