0

SQLiteDatabaseに値を保存しようとすると少し混乱します。アプリで状態とデータをシームレスに保存したいので、最初に「SQLDbに保存(AsyncTask)」コードをonStop()に入れ、「SQLDbからロード」コードをonStart()に入れます。ただし、これは信頼性が低いことに気づきました。戻るボタンまたはホームボタンを押すとonPause()が呼び出され、場合によってはonStop()が呼び出されます。アプリをフォアグラウンドに戻すと、Spinnerアイテムがそこにある場合もあれば、空の場合もあります。 onStop()/ onStart()が呼び出されたかどうかにより、残りのビュー/コンテンツも予測できません。

そこで、「save」コードをonPause()に移動し、「load」コードをonResume()に移動しました。今、私はこれらのメソッドでこの種のことを行うべきではないことをドキュメントで読みましたが、ほとんどの場合、onStop()やonStart()よりもうまく機能します。ただし、それでも、正確に信頼できるわけではありません。AsyncTaskが終了しないように見える場合があります。AsyncTaskが終了する前にユーザーがアプリをフォアグラウンドに戻すと、上記の予測できないビューが発生します。

このようなものをどこに保存すればよいですか?

注:ユーザーが動的にアイテムを追加できる2つのスピナーと、スピナーの1つ(スピナーアイテムごとに1つのgridChild)に基づいて自分自身を再設定する必要があるGridViewがあります。私の知る限り、この種のものはSharedPreferencesや同様の状態保存手法では簡単に保存できません。データベースで実行する必要があります(特に、ユーザーの入力内容に応じて、保存されるオブジェクトの数は無限です)。

4

1 に答える 1

1

通常、データを永続化onPause()して復元しonResume()ます。

これはonStop()、システムがアプリを強制終了する必要がある場合に呼び出されることが保証されていないためです。

于 2013-02-11T17:20:17.610 に答える