2011-01-07 48 views
1

我正在创建自己的内容提供者。在内容提供者的文档中,它表示查询,插入和更新等方法需要线程安全。那么我应该像这样用一个互斥体来保护它们吗?我是否需要在Android Content-Provider方法中使用互斥锁?

private static Mutex cpMutex; 

public Cursor query(){ 
    cpMutex.lock(); 
    //do stuff 
    cpMutex.unlock(); 
    return result; 
} 

public Uri insert(){ 
    cpMutex.lock(); 
    //do stuff 
    cpMutex.unlock(); 
    return result; 
} 

回答

2

你可能不应该使用同步,你应该做线程安全操作。你在做什么不是线程安全的?

+0

操作内容提供者是其前端的后端数据结构。我很确定我要使用sqllite数据库。它会照顾我的同步吗? – 2011-01-07 00:26:33

1

您不需要使用互斥锁。只要使方法同步。像这样:

public synchronized Cursor query(){ 
... 
} 
+0

是的,我想这会工作,只要我没有在UI线程上运行这些方法,这在编程实践方面似乎不太好。然后,同样的事情发生在我最初使用互斥锁(D'oh!)的想法上。我认为法尔玛利的回应可能是正确的道路。 – 2011-01-07 00:36:17