AsyncTasks
でアクセスするDBApdater
クラスがあります。 DB上で定義された各操作は、dbからopen、insertまたはdeleteと呼ばれるクラスDBAdappter
で記述された関数を呼び出してから、DBを閉じる必要があります。 1つのAsyncオブジェクトがDbApater
のオブジェクトを通してopenを呼び出すと、最初のAsyncTask
がDB上でcloseを呼び出すまで、2番目のAsyncTasks
がopenを呼び出すのを防ぐことができます。私はAndroid Async Syncronization
public void open()
{
synchronizaed(myLock.getClass)
{///Open the DB
}
}
public void close()
{
synchronizaed(myLock.getClass)
{///close the DB
}
notify();
}
だろうこのコードの動作を記述しmentod
とオープンの公共static Object myLock =new Object();
のようなロックを使用することができます。基本的に、呼び出し側のクラスは、開いているmenthodのロックを取得し、closeが呼び出されたときにのみ解放します。
種類よろしく、open()
とclose()
メソッドを介してデータベースへのアクセスを同期
ムハンマドMateen
通常、myLock.getClass()ではなく、myLockで同期します。 'notify()'は必須ではありません。また、「myLock」は間違いなく「公開」にする必要があります。 –
そのコードは 'open'と' close'への同時呼び出しを防ぎます。例えば、 'Thread1'はデータベースを開き、' Thread2'はデータベースを変更し、 'Thread1'はデータベースを変更し、' Thread2'はデータベースを閉じます。 –
ContentProvider:sはあなたの友人です - あなたのアクティビティクラスをSQLiteDatabaseオブジェクトリファレンスで捨てることによって敗北しなければならない致命的な敵ではありません。 – Jens