我有一个是通过许多AsyncTasks
访问的DBApdater
类。在数据库上定义的每个操作都必须调用DBAdappter
类中写入的函数,该函数称为打开,插入或从数据库中删除,然后关闭数据库。如果一个异步对象通过DbApater
的对象调用open,我怎么能阻止第二个AsyncTasks
调用open,直到第一个AsyncTask
在DB上调用close。我能使用像公共static Object myLock =new Object();
的Android异步同步化
,并在打开的锁mentod写
public void open()
{
synchronizaed(myLock.getClass)
{///Open the DB
}
}
public void close()
{
synchronizaed(myLock.getClass)
{///close the DB
}
notify();
}
将这段代码工作。基本上,调用类会在打开的menthod上获得一个锁,并且只有在调用close时才会释放它。
亲切的问候,
穆罕默德MATEEN
通常,您将在'myLock'上进行同步,而不是'myLock.getClass()'。 'notify()'不是必需的。 myLock绝对不应该是'public'。 – 2012-02-15 11:40:48
该代码将阻止并发调用“open”和“close”。它不会阻止例如“Thread1”打开数据库,“Thread2”修改数据库,“Thread1”修改数据库,“Thread2”关闭数据库。 – 2012-02-15 11:49:58
ContentProvider:s是你的朋友 - 不是凡人的敌人,必须通过抛弃你的Activity类和SQLiteDatabase对象引用来击败敌人。 – Jens 2012-02-15 13:12:17