0

私はiOSが初めてです。iPhoneでホームボタンを押すと、アプリケーションがサスペンドモードになります。プログラムで、このイベントをキャプチャしてローカルデータを消去するにはどうすればよいですか? 親切にアドバイス。

4

4 に答える 4

2

アプリのデリゲート内から次のメソッドを使用できます。

- (void)applicationWillResignActive:(UIApplication *)application

Apple は、このデリゲート メソッドがいつ呼び出されるかを説明しています。

アプリケーションがアクティブ状態から非アクティブ状態に移行しようとしているときに送信されます。これは、特定の種類の一時的な中断 (電話や SMS メッセージの着信など) や、ユーザーがアプリケーションを終了してバックグラウンド状態への移行を開始したときに発生する可能性があります。

于 2012-05-11T21:11:52.780 に答える
1

デリゲート内に、呼び出したいコードをこれらの中に入れます。1 つはアプリケーションをバックグラウンドにするたびに起動し、もう 1 つは戻ってきたときに起動します。

- (void)applicationDidEnterBackground:(UIApplication *)application

- (void)applicationDidBecomeActive:(UIApplication *)application
于 2012-05-11T21:11:04.347 に答える
0

他の人が議論した UIApplicationDelegate メソッドを実装することもできますが、クリーンアップを行う必要があるオブジェクトを対応する通知に登録する方が便利なことがよくあります (そして間違いなくクリーンです)。

UIApplicationDidEnterBackgroundNotification
UIApplicationWillResignActiveNotification

例えば

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

(このルートを使用する場合は、監視オブジェクトの割り当てが解除されたときにオブザーバーを削除することを忘れないでください。)

于 2012-05-11T21:16:48.263 に答える
0

必要に応じて、アプリ デリゲート applicationWillResignActive メソッドと UIBackgroundTaskIdentifier を使用します。例えば:

- (void)applicationWillResignActive:(UIApplication *)application {
    UIBackgroundTaskIdentifier backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^(void) {
        [application endBackgroundTask:backgroundTaskIdentifier];
        //your cleanup code
    }];
}
于 2012-05-11T21:12:33.273 に答える