問題タブ [staledataexception]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
646 参照

java - ListView メソッドが「古いオブジェクト状態」例外をスローするのはなぜですか?

現在、アプリ内で、データベースから ListView を更新するメソッドを呼び出すと、古いオブジェクトの例外が発生します。

データベースにクエリを実行するときにすべてのカーソルを閉じるように注意しました。「startManagingCursor」を使用して返されたときにカーソルも管理しますが、それでもこの問題が発生します。

現時点では、データベースに新しい項目を追加するときに、クラスのプライベート メソッド内で ListView 更新メソッドを呼び出します。これは、オブジェクトが例外をスローしている場所です。

セッションを「更新」している人々について読んだことがありますが、データベースのバージョンがこれに含まれると思いますか? しかし、全体的に私は立ち往生しており、これを解決できません。

更新されたエラー:

02-13 13:23:06.588: E/AndroidRuntime(287): 致命的な例外: メイン 02-13 13:23:06.588: E/AndroidRuntime(287): android.database.StaleDataException: 閉じたカーソルにアクセスする 02-13 13: 23:06.588: E/AndroidRuntime(287): android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:217) 02-13 13:23:06.588: E/AndroidRuntime(287): android.database.AbstractWindowedCursor.getInt で(AbstractWindowedCursor.java:84) 02-13 13:23:06.588: E/AndroidRuntime(287): com.example.flybase2.ShoppingList.updateTotal(ShoppingList.java:248) 02-13 13:23:06.588: E /AndroidRuntime(287): com.example.flybase2.ShoppingList.access$1(ShoppingList.java:231) 02-13 13:23:06.588: E/AndroidRuntime(287): com.example.flybase2.ShoppingList$2. onClick(ShoppingList.java:350) 02-13 13:23:06.588: E/AndroidRuntime(287): com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:158) 02-13 13:23:06.588: E/AndroidRuntime(287): android.os.Handler.dispatchMessage(Handler.java:99) 02-13 13:23:06.588: E/AndroidRuntime(287): android.os.Looper.loop(Looper.java:123) 02-13 13:23:06.588: E/AndroidRuntime(287): android.app.ActivityThread で.main(ActivityThread.java:4627) 02-13 13:23:06.588: E/AndroidRuntime(287): java.lang.reflect.Method.invokeNative(ネイティブ メソッド) 02-13 13:23:06.588: E/ AndroidRuntime(287): java.lang.reflect.Method.invoke(Method.java:521) 02-13 13:23:06.588: E/AndroidRuntime(287): com.android.internal.os.ZygoteInit$MethodAndArgsCaller で.run(ZygoteInit.java:868) 02-13 13:23:06.588: E/AndroidRuntime(287): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 02-13 13:23 :06.588:E/AndroidRuntime(287): dalvik.system.NativeStart.main(ネイティブメソッド)

これは、ListView を呼び出す私のクラスです。

これは、データベースから返されたカーソルです。

0 投票する
2 に答える
1248 参照

android - 時期尚早にcursor.close()を呼び出す以外に、何がStaleDataExceptionを引き起こす可能性がありますか?

私は現在、Androidアプリを大幅に変更/書き直しています.次の行に沿って非常に時折クラッシュするのを見てきました:CursorAdapterメソッドが呼び出され、それが呼び出されますAbstractWindowedCursor#checkPosition().

問題は、s を閉じていないことですCursor。すべてCursorの は から来て、CursorLoaderによって生成されますContentProvider。からCursoreach それぞれにを渡し、for に通知を登録し、eachからに通知しています。要するに、使用中に a が閉じる理由が見つかりません。CursorAdapterLoaderCallbacksCursorContentProviderContentResolverinsert(...)delete(...)update(...)Cursor

だから:他の原因は何StaleDataExceptionですか?

0 投票する
3 に答える
354 参照

selenium-webdriver - StaleElementReference例外

私はそのStaleElementReferenceException問題に苦しんでいます。私はこのトピックについてかなりの数の議論を見てきましたが、私が直面している問題の解決策を見つけることができませんでした。

テストでは、Webページのフッターにあるすべてのリンクを取得し、リンクをクリックしてページのタイトルを確認することにより、リンクがアクティブかどうかを確認します。

まず、すべてのリンクを見つけて配列リストに保存します。リンク名をデータベースから取得した値と比較します。次に、リンクごとに、リンクをクリックしてページタイトルを確認します。次に、「driver.navigate.back()」を使用して、元のページに戻り、残りのリンクを続行します。

ただし、コントロールがページに戻ると、StaleElementReferenceExceptionが発生します。

誰かが私にこれから抜け出す方法を提案できますか?

ありがとう、アヌジ

0 投票する
2 に答える
1322 参照

android - onLoadFinished() 中にカーソルをマージすると、ローテーション後に StaleDataException が発生する

loaderManager を使用して、データベースからいくつかの結果をロードしています。残念ながら、次のコードはデバイスをローテーションした後にStaleDataExceptionを生成します。

getWebSearchesCursor()を呼び出すと、MatrixCursor が返され、返された結果に付随する追加の検索プロンプトが表示されます。adapter.changeCursor(results)adapter.changeCursor(cursor)に変更するとエラーが修正されることがわかったので、返されたカーソルに MatrixCursor をマージするとエラーが発生するようです。

私の質問は、なぜですか?

結果が返された場合、ユーザーがいくつかの Web サイトで検索を実行できるように、返されたカーソルに項目を追加できるようにしたいと考えています。回転後にこの例外が発生しないように、カーソルをマージするより良い方法はありますか?

0 投票する
1 に答える
128 参照

image - インテントで Android イメージを開くと StaleDataException が発生する

私は使用してみました:

また

それは機能しますが、画像表示意図を離れようとすると、RuntimeExceptionStaleDataException Attempted to access a cursor after after it has been closed が発生します

別のインテントを起動しようとすると機能するため、アクティビティの一時停止または再開とは関係ありません

誰か助けてください

電子メールの意図など、他の意図でもあることが判明し、キャンセルするとそのエラーが発生します

0 投票する
1 に答える
871 参照

android - android.database.StaleDataException: 閉じたカーソルへのアクセス

メインのアクティビティ、SQLiteOpenHelper クラス、および Fragment があり、データベースからデータを含む Cursor を取得する必要があります。

メイン アクティビティ内で、静的パブリック メンバーとしてデータベースを保存して開始します。

これは私のデータベースのクラスがどのように見えるかです:

私のフラグメント内で、すべてのレコードを含むリストを取得しようとしています:

アプリケーションを実行すると、次のエラーが表示されます。android.database.StaleDataException: Access closed cursor

0 投票する
1 に答える
4487 参照

java - findOne を呼び出すと、Hibernate が古いオブジェクトを返す

マルチスレッド Web アプリケーションからSpring Data JPA save(Object entity) メソッドを使用してオブジェクトを保存しています。

時折、次を使用してセッションからオブジェクトをロードすると、次のことがわかります。

findOne(long id)

セッションから返されたオブジェクトは古く、データベースの最新バージョンを反映していません。このアプリケーションからのデータのみを保存し、Spring Data JPA インターフェースの 1 つのインスタンスのみを使用しています。

何が原因で、どうすれば修正できますか?

0 投票する
2 に答える
334 参照

android - for ループで使用されるカーソルを閉じる方法

バックグラウンド

次のようにカーソルを使用しています。

これにより、閉じたカーソルを再利用しようとすると、ループの 2 回目のラウンドで StaleDataException が発生します。cursor.close() を削除すると問題なく動作しますが、「事前に閉じることなくカーソルが終了しました」という警告が表示されます。

リサーチ

この回答のアドバイス: https://stackoverflow.com/a/18107638/1977132は、おそらくカーソルを null に設定してcursor.close(); cursor = null;、新しいカーソルを作成できるようにすることですが、違いはありません。 StaleDataException。

私はすでに試しました...

次のようにループの外に移動してみました:

しかし、これは「カーソルが初期化されていない可能性があります」というエラーでコンパイルされません。

質問

私の質問は、ループ内でカーソルを正しく使用して閉じる方法です。

0 投票する
2 に答える
723 参照

android - Cursor を閉じると、CursAdapter を使用したバックグラウンド フラグメントで StaleDataException が発生する

これは私の質問へのフォローアップです: How to close a cursor used in a for loop

応答により、「事前に閉じることなくカーソルがファイナライズされました」という警告は解決されましたが、非常に特定の状況で StaleDataException が発生しました。

リストがスクロールされた場合、このカーソルは閉じました...

バックグラウンド化されたフラグメントには、次のエラーが表示されます。

この質問は同様の問題に関連しているようです: onLoadFinished() 中にカーソルをマージすると、回転後に StaleDataException が発生します が、カーソルのマージに関連しており、swapCursor の使用を提案しています。この状況にどのように適用するかわかりません。

私の考えではgetListView().getItemAtPosition(n)、新しいカーソルではなくカーソルへの参照を返す必要があるため、アクティビティがバックグラウンドであり、フラグメントの状態を保存しているときに現在閉じられているカーソルにアクセスしようとすると、クラッシュします。前述のように、リスト ビューがスクロールされた場合にのみクラッシュします。なぜそれが影響するのかわかりません。

クラッシュを引き起こさずにカーソルを正しく閉じるにはどうすればよいですか?

カーソルがどのようにロードされたかを確認するように求めるコメントに対応する EDIT コード: