0

我正在开发一个包含大量数据库操作的小型应用程序。基本上它是一个选项卡活动,其中有 3 个选项卡。每个选项卡将通过解析 xml 文件显示数据。3 个选项卡活动使用相同的 db 对象,因此我只能看到 2 个填充数据的选项卡,其中第 3 个选项卡始终显示我创建的进度对话框。以下是我填充数据库的异步任务。

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 个任务连续访问。这样我的一个选项卡始终处于等待阶段,并且视图也在进行中。所以,如果有一个任务正在访问数据库,其他任务应该在等待。如何处理这种情况?

4

1 回答 1

0

我没有在我的数据库基本操作中关闭一些游标。以便在执行插入和更新操作后不会释放数据库对象。关闭所有游标后,我的应用程序工作正常。

于 2012-08-02T15:32:01.343 回答