10

I現在、多額/修正するAndroidアプリを書き換えて、私は次の行に沿って非常に時折クラッシュを見てきましたよ:CursorAdapterメソッドが呼び出され、それがAbstractWindowedCursor#checkPosition()を呼び出し、:途中でcursor.close()を呼び出す以外にStaleDataExceptionが発生する原因は何ですか?

02-20 15:03:18.180 E/AndroidRuntime(17143): android.database.StaleDataException: Attempting to access a closed CursorWindow.Most probable cause: cursor is deactivated prior to calling this method. 
02-20 15:03:18.180 E/AndroidRuntime(17143): at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:139) 
02-20 15:03:18.180 E/AndroidRuntime(17143): at android.database.AbstractWindowedCursor.getLong(AbstractWindowedCursor.java:74) 
02-20 15:03:18.180 E/AndroidRuntime(17143): at android.database.CursorWrapper.getLong(CursorWrapper.java:106) 
02-20 15:03:18.180 E/AndroidRuntime(17143): at android.widget.CursorAdapter.getItemId(CursorAdapter.java:220) 

トラブルされ、我々は、 Cursorを閉じていません。当社のすべてのCursorは、CursorLoaderから来ており、ContentProviderによって製造されています。私たちは、LoaderCallbacksからそれぞれCursorAdapterCursorを渡している、我々はContentProviderに通知のCursorを登録している、我々は要するに、私はできません...各insert(...)delete(...)update(...)からContentResolverを通知しています使用中にCursorが閉じられる理由を見つけてください。

So:は他にもありますの原因はStaleDataExceptionですか?

+0

それはあなたのため、しばらくしています尋ねられましたが、何らかの理由でFilterQueryProviderが関与していましたか? –

+1

ヘイ・アンドリュー!解決策を見つけられましたか? – TheLittleNaruto

答えて

-2

あなたは、Android 4.0以上でContext.managedQuery()を呼び出した場合、あなたはCursor.close()を呼び出すべきではありません、あなたがそうするならば、StaleDataExceptionあなたは次のようにあなたのコードを変更することができ、スローされます。

if(VERSION.SDK_INT < 14) { 
    cursor.close(); 
} 
関連する問題