LoaderEx SQLiteCursorLoaderを使用するFragmentActivityが一時停止または破棄されたときに、データベースが閉じられていることを確認する必要がありますか? FragmentActivity
が破壊された場合
おかげでずっとcommonsware loaderex SQLiteCursorLoaderを使用しているときにデータベースを終了する場合はいつですか?
0
A
答えて
1
、それはSQLiteCursorLoader
に未処理Cursor
にclose()
を呼び出しLoader
実装にonReset()
を呼ぶであろう、それが作成されたすべてのLoader
インスタンス上reset()
を呼び出す必要があります。
これは、アクティビティが破棄されたときに発生することに注意してください。アクティビティが一時停止されたときにCursor
を非アクティブにするという管理されたCursor
コンセプトのLoader
に相当するようではありません。これはひどいヒープ管理機能だったので、残念です。それを最もうまくサポートする方法を考えます。
何かが流出しているという証拠が見つかった場合は、エラーの再現方法の詳細をfile an issue in the LoaderEx projectにしてください。
関連する問題
- 1. VBAを使用すると、開いている場合は既存のデータベースを使用し、それ以外の場合は新しいデータベースを開きます。
- 2. UbuntuのC++でpthreadを使用している場合。メインスレッドスコープの開始と終了はどこですか?
- 3. waitForを使用している場合、JVMを強制終了すると子プロセスも終了するのはなぜですか?
- 4. スレッドを使用しているときにwhileループを終了できない
- 5. ドッキングコードを使用しているときにコード0でコンテナを終了する
- 6. eclipseでTomcatを終了する(停止しない)場合のデータベース接続リーク
- 7. フォークオプションを使用しているときにSTDIN EOFで終了する
- 8. AndroidとSQLite:ステートメントを終了するときにセミコロンを使用するのはいつですか?
- 9. 値が見つからない場合はvbaコードを終了
- 10. "using"ステートメントを使用している場合の接続の終了
- 11. UIPickerViewDataSourceが終了したときを知りたい場合
- 12. データベース接続が利用できない場合、タイムアウト後にローダーを終了する
- 13. コマンドラインからcurlを使用してセッションが終了する場合
- 14. エンティティフレームワークモデルを使用している場合は、別のデータベースにaspnet_regsqlテーブルを持つ方がよいですか?
- 15. ThreadPoolExecutorでタスクがない場合、ThreadPoolexecutorは終了しますか?
- 16. プロセスを使用しているときにプログラムが終了しない
- 17. child_processが終了しないときに終了する
- 18. Golang:select文が終了しないときに終了する
- 19. codeigniterセッションが終了しないときに終了する
- 20. 私は特定の単語を入力すると、私の場合 "終了"でプログラムを終了するにはどうすればいいですか?
- 21. Coffeeifyを使用しているときに「エラー:終了後に書き込む」
- 22. 正常に終了する場合、プロセスを強制終了しないでください。
- 23. MySQL:ケースを使用して複数の内部ジョインテーブルを終了する場合
- 24. IFを使用する........終了SSRSの場合
- 25. 終了perl pmが利用できない場合
- 26. ユーザーが終了したいときにbashスクリプトからSTDINを終了する
- 27. コンテンツプロバイダを使用している場合にデータベースを再作成
- 28. 既にアクティベートされている場合はアクティビティを終了する
- 29. HTML5モバイルアプリ - 単にUIWebViewを使用する場合、PhoneGapを使用する場合はいつですか?
- 30. SQLマージ。そうでない場合は終了するが、ストアドプロシージャ
+1ですが、私が正しく理解していれば、 'Loader 'の主張されている利点の1つは、' Activity'が破壊された後、例えば設定変更などのデータ(この場合は 'Cursor')が保持されることです。これは、 'LoaderManager'の寿命が' Activity'のものと切り離されているためです(私が間違っている場合は、私に修正してください)。しかし、これは 'onDestroy()'のすべてを閉じるともう終わりません。普通の 'AsyncTask'を使わないのはなぜですか?作成されたすべてのLoaderをどのように追跡することができますか? 'SQLiteOpenHelper'を閉じるのはどうですか?それは重要でもあります。 – Raffaele
@Raffaele: 'FragmentActivity'(およびAPIレベル11+のベースライン' Activity')は、設定の変更を適切に処理するための賢い人を持っています。この答えで、私が「破壊された」と書いたとき、私は実際には「構成の変更に起因するものではなく、最終的に破壊された」ことを意味しました。私は混乱のためにお詫び申し上げます。 – CommonsWare
そして、この*本当の破壊*に関連したコールバックは何ですか?ローダーを閉じるために必要です。これが起こったときに、 'Loader'が実行されていないことを保証する必要もあります。さらに、 'LoaderManager' APIは初期化された' Loader'をリストしていないので、手動で追跡するか、すべての可能なローダーをinitして閉じる必要がありますが、このアプローチは* fixed *ローダーをサポートすることはできません。* – Raffaele