Android4.0でCursor使用時に例外が発生する

Android4.0で、カーソルを使用しているActivityAからActivityBに遷移して、ハードウェアの戻るボタンでActivityAに戻ったとき以下の例外が発生しました。

java.lang.RuntimeException: Unable to resume activity
java.lang.IllegalStateException: trying to requery an already closed cursor

ActivityAで、

startManagingCursor(cursor);

としていると、カーソルの管理をAndroidに委譲できるが、これが原因となっているようです。ドキュメントを見ると確かにstartManagingCursor(cursor)は、deprecatedとなっていました。

startManagingCursor(cursor)

ドキュメントには、CursorLoader()を使えと書いてありますが、カーソルの管理をAndroidに委譲していたから、例外が発生しているので、素直に自前で管理してあげれば良いようです。なので、onDestroy()で

cursor.close();

としてやると解決しました。