1

アイス クリーム サンドイッチでは、CursorAdapter に managedQuery を渡した CursorAdapter を持つグリッドビューを持つアプリケーションを再開したいときに、アプリケーションが強制終了を開始します。例外は、閉じられているカーソルにアクセスしようとしているという StaleDataException になります。

managedQuery を使用する代わりに、getContextResolver().query を使用しました。アプリケーションを再開しようとしたときに、アプリケーションを強制終了するのをやめるのに役立ちます。

その場合、私がこのように使用した場合。カーソルを閉じる必要がありますか、それともアダプタによって閉じられますか?

4

1 に答える 1

1

Activity documentation using managedQueryに従って、手動でカーソルを閉じる必要はありませんが、ContentResolver を手動で使用する必要があります。アダプターは、ユーザーがいつアプリケーションを離れ、カーソルが不要になったかを (アクティビティではなく) 認識しないため、カーソルを閉じません。通常は、changeCursor()を null で呼び出す (アダプターは古いものを閉じます) か、swapCursor()を null で呼び出す (そして返されたカーソルを手動で閉じる) だけで十分です。

しかし、カーソルをロードするためのより便利で信頼性が高く、Google によって提案された方法として、 CursorLoaderを検討することをお勧めします。古い Android をターゲットにしている場合は、サポート ライブラリ v4の使用を検討してください。

于 2012-07-17T02:54:43.457 に答える