9

UIApplicationDidEnterBackgroundNotificationiPhoneアプリでの使用方法、またはそれからどのように利益を得ることができるか

4

2 に答える 2

29

この通知は、ユーザーが iPhone 4 でアプリを「終了」したことを意味します。電話やテキスト メッセージが着信し、ユーザーが割り込み (応答/返信) を受け入れたとき、またはユーザーがホーム ボタンを押したときに発生します。

SO で、すべての状態間の相互作用と適切な通知を示すこのリンクを見つけました

この通知を利用するには、@Antwan が提案したように applicationDidEnterBackground を実装できます (UIApplicationDelegate クラス - それがメイン クラスです)。

または、コード内の必要な場所に通知ハンドラーを設定することもできます。

[[NSNotificationCenter defaultCenter] addObserver: self
                                         selector: @selector(handleEnteredBackground:) 
                                             name: UIApplicationDidEnterBackgroundNotification
                                           object: nil];

幸運を!

オデッド。

于 2011-02-10T08:02:15.597 に答える
3

アップルのドキュメントから。

アプリケーションが現在バックグラウンドにあることをデリゲートに伝えます。

- (void)applicationDidEnterBackground:(UIApplication *)application

パラメータ application シングルトン アプリケーション インスタンス。

考察applicationWillTerminate:iOS 4.0 以降では、バックグラウンド実行をサポートするアプリケーションをユーザーが終了する と、メソッドの代わりにこのメソッドが呼び出されます。このメソッドを使用して、共有リソースを解放し、ユーザー データを保存し、タイマーを無効にし、十分なアプリケーション状態情報を保存して、後で終了した場合にアプリケーションを現在の状態に復元する必要があります。また、アプリケーションのユーザー インターフェイスの更新を無効にし、一部の種類の共有システム リソース (ユーザーの連絡先データベースなど) を使用しないようにする必要があります。また、バックグラウンドで OpenGL ES を使用しないようにすることも不可欠です。

このメソッドの実装では、タスクを実行して戻るまでに約 5 秒かかります。最終タスクを実行するために追加の時間が必要な場合は、 を呼び出して、システムから追加の実行時間を要求できますbeginBackgroundTaskWithExpirationHandler:。実際には、applicationDidEnterBackground:できるだけ早く元に戻す必要があります。時間切れになる前にメソッドが戻らない場合、アプリケーションは終了し、メモリから消去されます。

このメソッドが終了する前に、ユーザー インターフェイスの調整に関連するすべてのタスクを実行する必要がありますが、他のタスク (状態の保存など) は、必要に応じて同時ディスパッチ キューまたはセカンダリ スレッドに移動する必要があります。開始するバックグラウンド タスクはapplicationDidEnterBackground:、そのメソッドが終了するまで実行されない可能性が高いため、それらのタスクを開始する前に、追加のバックグラウンド実行時間を要求する必要があります。つまり、最初にタスクを呼び出しbeginBackgroundTaskWithExpirationHandler:てから、ディスパッチ キューまたはセカンダリ スレッドでタスクを実行します。

アプリケーションはUIApplicationDidEnterBackgroundNotification、このメソッドを呼び出すのとほぼ同時に通知を送信し、関心のあるオブジェクトに遷移に応答する機会を与えます。

于 2011-02-01T12:55:55.843 に答える