0

バックグラウンドでデータをダウンロードしています。したがって、ユーザーがホームボタンを押して、アプリのアイコンをダブルクリックしてアプリを強制終了すると、データのクリーニングが必要になります。デリゲート メソッドでデータ クリーニングを実行しようとしましたapplicationWillTerminateが、アプリはクラッシュ中にこのメソッドを呼び出しませんでした。applicationDidEnterBackgroundアプリがバックグラウンドでデータをダウンロードし続けるため、データのクリーニングを行うことができません。私は何時間も検索します..しかし、私はこれについて無知です.

アプリがクラッシュする前に(データを消去するために)メソッドを呼び出す方法はありますか?

ありがとう!

4

1 に答える 1

0

アプリがクラッシュしたり、強制的に終了したりした場合、データをクリーンアップすることはできません。代わりに、次にデータを開いたときにデータを消去できます。何をしているかに応じて、内部NSUserDefaultsでフラグを使用して、データを消去する必要があるかどうかを知らせることができます。

たとえば、ダウンロードの開始時に次のように設定できます。

[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithBool:YES] forKey:@"pendingDownload"];
[[NSUserDefaults standardUserDefaults] synchronize];

ダウンロードが終了したら:

[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"pendingDownload"];
[[NSUserDefaults standardUserDefaults] synchronize];

内部didFinishLaunchingWithOptions:

if([[[NSUserDefaults standardUserDefaults] objectForKey:@"pendingDownload"] boolValue]){
    // clean data
    [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"pendingDownload"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}
于 2013-05-24T06:57:45.220 に答える