1

この質問は、私が読んだ多くの質問と非常に似ているようですが、やはり、私を満足させるコードは見つかりませんでした。(または、眠すぎてそれに気付かない)

それらの1つだけが存在することを確認するためのシングルトンデータベースヘルパーがあります。問題はここではありません。getReadableDatabaseandメソッドを使用しているときにデータベース接続が 1 つしか存在しないことを確認しようとすると、問題が発生しgetWritableDatabseます。

ほとんどの場合、同じ参照が返されることはわかっており、その使用を処理できますが、読み取り専用接続を開いている (おそらくメモリが不足している) 場合にどうすればよいかわかりません。書き込み可能な接続。読み取り専用接続が閉じられるまで書き込みスレッドをブロックしてから、書き込み可能な接続を開こうとします。

どうやってそれをしますか?おそらく、これは Java でスレッドをロックするだけで実行できますが、どのメソッドを使用する必要があるかはわかりません。

PS何かが足りない場合は、別の方法でそれを行う方法を教えてください。

4

1 に答える 1

1

私は過去に同じ問題を経験しましたが、同期が答えです。簡単に言えば、databasehelper インスタンスで同期します。または、getWritableDatabase のラッパー メソッドを作成し、メソッドの宣言で synchronized キーワードを使用することもできます。次に、 getReadableDatabase を呼び出すのではなく、ラッパー メソッドのみを呼び出します。getReadableDB と getWritableDB は同じ参照を与えるため、安全に参照できます。わかる?

于 2012-09-17T05:28:19.070 に答える