android – 如何将多个greenDAO Tx操作合并到一个事务中?

我的应用程序使用远程REST API并使用greenDao填充本地数据库.我有AsyncTask类的服务:
@Override
protected Void doInBackground(Void... params) {
    insert100RowsIntheFirstTable();
    insert100RowsIntheSecondTable();
}

在每个insert-method中我都有insertOrReplaceInTx,我主要用它来提高性能.

如果任何方法无法检索数据,我需要放弃结果.它应该通过同一个交易来完成.

我想知道在方法中插入insertOrReplaceInTx时用mDaoSession.callInTx(可调用)来包围我的插入方法调用是否正确.我对吗?

另外,如果引发异常,我如何放弃交易 – 是否通过greenDao自动完成?

解决方法

是的,如果您的代码可以抛出异常,请使用callInTx(如果不是,您也可以考虑runInTx.Android的sqlite API负责那些“嵌套”事务.

毕竟,如果您查看源代码,callInTx只是一些方便的方法

public <V> V callInTx(Callable<V> callable) throws Exception {
    db.beginTransaction();
    try {
        V result = callable.call();
        db.setTransactionSuccessful();
        return result;
    } finally {
        db.endTransaction();
    }
}

相关文章

以下为个人理解,如错请评 CE: 凭据加密 (CE) 存储空间, 实际路径/data/user_ce/ DE: 设备加密 (DE) 存...
转载来源:https://blog.csdn.net/yfbdxz/article/details/114702144 用EventLog.writeEvent打的日志(或...
事件分发机制详解 一、基础知识介绍 1、经常用的事件有:MotionEvent.ACTION_DOWN,MotionEvent.ACTION...
又是好久没有写博客了,一直都比较忙,最近终于有时间沉淀和整理一下最近学到和解决的一些问题。 最近进...
Android性能优化——之控件的优化 前面讲了图像的优化,接下来分享一下控件的性能优化,这里主要是面向...
android的开源库是用来在android上显示gif图片的。我在网上查了一下,大家说这个框架写的不错,加载大的...