0
我正在開發一個有很多數據庫操作的小應用程序。基本上它是一個選項卡活動,有3個標籤。每個選項卡將通過解析xml文件來顯示數據。 3個選項卡活動使用相同的數據庫對象,因此只能看到兩個填充了數據的選項卡,其中第三個選項卡總是顯示我創建的進度對話框。 以下是我的填充數據庫的異步任務。如何讓android sqlite數據庫一次可以被一個任務訪問?
protected void onPreExecute() {
super.onPreExecute();
sdbop = new SDBOperations(context);
hdbop = new HDBOperations(context);
pdbop = new PDBOperations(context);
sdbop.open();
hdbop.open();
pdbop.open();
}
@Override
protected Void doInBackground(UpdateXML... statuslist) {
for(UpdateXML status:statuslist){
if(status==UpdateXML.C){
checkStatusAndPopulateDB(status,null);
continue;
}
String url = getUpdateURL(status);
String xml = XMLParser.getXmlFromUrl(url);
if(xml!=null)
checkStatusAndPopulateDB(status,xml);
}
return null;
}
private void checkStatusAndPopulateDB(UpdateXML status, String result) {
switch (status) {
case S:
sdbop.open();
dropTable();
insertIntoSTable(result);
sdbop.close();
updateSList();
break;
case H:
hdbop.open();
dropHTable(hdbop);
insertIntoHTable(hdbop,result);
hdbop.close();
updateHList();
case P:
pdbop.open();
dropPTable(pdbop);
insertIntoPTable(pdbop, result);
pdbop.close();
updatePList();
break;
case C:
updateLView();
break;
default:
break;
}
所以每件事情都工作正常。但db對象可以連續由3個任務訪問。所以我的一個標籤總是處於等待階段,並且視圖也在進行中。 所以,如果有一個任務正在訪問數據庫,其他人應該在等待。 如何處理這種情況?
檢出這個問題http://stackoverflow.com/questions/2493331/what-are-the-best-practices-for-sqlite-on-android – you786 2012-08-02 05:46:34
感謝您的鏈接。非常有用的信息在那裏。 – jellybean 2012-08-02 05:53:23