事务完成后Android SQLite回调

时间:2014-10-21 15:44:25

标签: android sqlite callback listener

寻找我在Android中遇到的SQLite错误的解决方案。基本上在某些情况下我运行插入查询,然后关闭我所在的活动并移动到下一个。关闭活动需要确保SQLiteDatabase已停止,因此活动中的onPause将停止数据库。

然而,我努力让应用程序等到交易完成。我看到存在一个SQLiteTransactionListener,但它的onCommit方法在提交之前被称为,在我的脑海中留下了可能性,在某些情况下我最终会遇到同样的问题。

如何在事务关闭时获得回调,以便延迟关闭数据库对象?

public void insertArrayList(SQLiteDatabase db, String Table, ArrayList<ArrayList<String>> tableData, Boolean clear) {
    Logg.d("Start");
    Cursor cols = db.rawQuery("select * from " + Table + " limit 0",null);
    db.beginTransaction();
    try {
        if (clear) {db.execSQL("delete from " + Table);}
        int Xtra = cols.getColumnCount() - tableData.get(0).size();
        for (ArrayList<String> item : tableData) {
            for (int a=0;a<Xtra;a++) {item.add("");}
            db.execSQL("insert into " + Table + " values " + rowValues(item) + ";");
            //Logg.i("insert into " + Table + " values " + rowValues(item) + ";");
        }
        db.setTransactionSuccessful();

    } catch (Exception e) {
        Logg.e("Error: " + e.getMessage());
    } finally {
        db.endTransaction();
        Logg.d("Finish");
    }
}

活动onPause覆盖:

@Override
public void onPause() {
    if (db != null) {
        Logg.d("SQLite db closing");
        db.close();
    }
    super.onPause();
}

1 个答案:

答案 0 :(得分:1)

不要停止数据库!使用存储在自定义应用程序类中的相同数据库。只要应用程序处于打开状态并在onTerminate()上关闭它,它就会打开。