2011-01-07 63 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