2011-01-29 32 views
1

私の問題が何であるか把握するのに苦労しています。プログラムでこのエラーが発生していますが、クラッシュなどの原因にはなりません。リリースしたいアップデートがありますが、このエラーが特定の時刻にスローされてリリースされたくありません。このエラーですべての関連記事を読みましたが、私の状況には該当しません。DatabaseObjectNotClosedExceptionエラーの原因を見つけることができません

私は、DatabaseHelperオブジェクトとSQLiteDatabaseオブジェクトを閉じていることを確認しました。私はまた、すべてのカーソルを閉じていることを確認しました。このエラーは、Cursorオブジェクトを返すgetActiveScheduleInfoメソッドを指しています。私はこのメソッドを呼び出すたびに、返されたカーソルがFinallyブロックで閉じられていることを確認しました。

このようにするのは間違っていますか? getActiveScheduleInfoを呼び出すメソッドでは、特定の条件に基づいて複数のreturnステートメントがあります。だから、各戻り行の前にカーソルを閉じるのではなく、私は条件テストをTryで囲み、最後にすべてを閉じます。

すべてが動作するはずですので、本当に助けていただければ幸いです。

ありがとうございます! ポール

答えて

1

私はこれを理解することができました!私はこれが同じ問題を抱えている他の誰かを助けることを願っています。

私は本質的にここで間違っていることは何もしていませんでしたが、むしろ私のカーソルのいくつかを閉じるには時間がかかりすぎました。非常に短い背景を与えるために、管理されたクエリを使用することはできませんでした。このコードはアクティビティではなくカスタムクラスに含まれていたため、startManagingCursorを使用することはできませんでした。私はAndroid 2.0(APIレベル5)に対してビルドしているので、新しいCursorLoaderオブジェクトを使用していません。

私は、次の手順を取っていた。

  1. は、データベースを開きます。
  2. 新しいカーソルの作成とクエリの実行。
  3. カーソルを反復して
  4. 必要なタスクを実行する最後のブロックにカーソルとデータベースを閉じる
  5. いくつかの他のロジックを実行します。

私のステップ4は、Cursorを閉じる前に来ていて、他のロジックを実行していることがわかりました。これからは、必要なデータをカーソルから読み込み、1行のコードだけではなく、カーソルを閉じます。 :)これは、これらのランダムなエラーを完全に排除し、私は再びクリーンランニングコードを持っています。

私は、同じ問題を抱えている他の人に役立つことを願っています!気をつけて、

ポール

関連する問題