ContentResolverとCursorの話

Cursor cursor = getContentResolver().query(CONTENT_URI, null, null, null, null);

非常に便利なんですが、queryで取ってきたCursorは、いらなくなったら破棄しないとIllegal State Exceptionが出ます。
関数の内部で上のようにquery実行したら、処理が終わった時点でcursor.close();

イメージ的にはmallocとfreeの関係みたいなもんか。使い終わったら破棄。

破棄するタイミングがおかしかったり、そもそも破棄してないと確保したCursorをOS側で破棄するタイミングでException。

という、デバッグ中にやっとわかったのでメモ。

広告

About sato_c

小学生の頃にインベーダーゲームやPC-8001やApple][といったものを知ってしまい、それ以降ずーっとゲーム好き。でも、あんまりうまくはありません。 仕事は当初はゲーム関係のプログラムやサウンドをやっていましたが、WEB関係を通ったあと、遊技機関係のプログラムやサウンドをやっています。あまり節操がないのか。 現在はJavaですてきなコードを書けるように勉強中。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。