0

電話で作成されたレコードをWebサーバーと同期するアプリがあります。

アプリにインターネット接続がない場合、アプリはすべてをローカルに保存し(Core Data)、インターネットが再び利用可能になったときに同期します。

これで、ユーザーは有効なユーザーケースシナリオを考え出しました...飛行機の中で(ネットワークなしで)レコードを作成しているとしましょう...すべてがローカルに保存されています。エアホステスが彼に電話のスイッチを切るように命じるまで、すべては順調です。アプリを使用している間、オフにするとすぐにオフになります。現在、データは失われています。アプリがバックグラウンドで動作している間、または電話がロックされているときでも、状態を保存しています。しかし、どうすればこれを保証できますか?

ユーザーが電話のスイッチをオフにした場合(ロックボタンを長押し)、バーをスライドする必要があり、デバイスのスイッチをオフにするまでに時間がかかります...そのため、状態を保存できる時間があります...どのデリゲートメソッドが呼び出されますかこの間?

4

1 に答える 1

3

アプリは、applicationWillResignActive、applicationDidEnterBackground、applicationWillTerminateの呼び出しをこの順序で取得します。

http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html#//apple_ref/doc/uid/TP40007072-CH4-SW3

ものを保存するための手がかりとしてapplicationWillTerminateを使用できます。

ただし、これらの状況だけでなく、進行中にデータが定期的に保存されるようにすることをお勧めします。ユーザーが大量のデータを入力した後、アプリがクラッシュした場合、データは失われます。

私はCoreDataにあまり精通していませんが、確かにそれはアトミック保存機能を持っている必要があります。

于 2012-06-07T16:45:10.197 に答える