4

ユーザーがホームボタンを押すとすぐにローカル通知をスケジュールしたいと思います。

この場合、どの App デリゲート メソッドを使用する必要がありますか :

  • applicationWillResignActive
  • applicationDidEnterBackground
  • applicationWillTerminate

3 番目のものは使用すべきではないと思いますが、最初の 2 つの違いは何ですか?

電話/その他の通知によって中断され、実際にホームボタンを押すことを区別する方法はありますか?

前もって感謝します。

4

3 に答える 3

7

ローカル通知をスケジュールするには、アプリが特定の割り込み回線の電話を受信するたびに電話をかけるため、使用するapplicationDidEnterBackground代わりに使用する必要があります。ユーザーがホームボタンを押したときに通知をスケジュールする必要があります。この場合は、これを行うのに適した場所です。applicationWillResignActiveapplicationWillResignActiveapplicationDidEnterBackground

使用する前に覚えておくべきことの1つ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/

于 2011-05-24T17:38:58.697 に答える
2

applicationDidEnterBackground でこれを行う必要があります。

  • ユーザーがホームボタンを押しても、applicationWillTerminate は呼び出されません。アプリの切り替えでは、ユーザーがアプリを明示的に終了したとき、またはメモリ不足の可能性がある場合にのみ送信されます。

  • applicationWillResignActive は、SMS や電話のアラートなどによってアプリが一時的に中断されたときにも呼び出されます。(ただし、ユーザーがメッセージ アプリまたは電話アプリに切り替えると、アプリは最終的に applicationDidEnterBackground メッセージを受け取ります)。

ユーザーがホームボタンをタップしてアプリがバックグラウンドに移行するポイントに特に関心があるようですね。applicationDidEnterBackground がその場所です。

また、常にローカル通知をスケジュールし、発生時にアプリが実行されていない場合にのみ応答することもできます。必ずしも良いとは限りません。考慮すべきオプションにすぎません。

于 2011-05-24T17:24:03.047 に答える
2

applicationDidEnterBackground を使用する必要があります。

applicationWillResignActive は、電話や SMS メッセージなど、アプリが中断されるたびに呼び出されます。この場合、ユーザーがこれらを無視すると、アプリはフォアグラウンドで実行され続けます。

applicationDidEnterBackground は、アプリが実際にバックグラウンドに移行したときにのみ呼び出されます。

于 2011-05-24T17:22:50.093 に答える