Android 处理多个db调用的异步任务

Android 处理多个db调用的异步任务,android,Android,我有一个应用程序,里面有一些片段。在其中的一个片段中,我经常调用db(大约4-5个),但是当用户与屏幕交互时,这些片段到处都是。例如,当按下按钮时,获取类型b的所有记录。。。我知道我们应该在一个单独的线程中执行所有数据库操作,我知道AsyncTask以及如何使用它来执行这些操作 我的问题是,因为我有多个方法调用db,所以创建一个新的异步任务只是在片段中的不同位置每次需要db调用时都进行db调用是没有意义的。有没有一种方法可以使用一个异步任务的干净简单的实现在片段中的不同位置进行多个db调用,该任

我有一个应用程序,里面有一些片段。在其中的一个片段中,我经常调用db(大约4-5个),但是当用户与屏幕交互时,这些片段到处都是。例如,当按下按钮时,获取类型b的所有记录。。。我知道我们应该在一个单独的线程中执行所有数据库操作,我知道AsyncTask以及如何使用它来执行这些操作


我的问题是,因为我有多个方法调用db,所以创建一个新的异步任务只是在片段中的不同位置每次需要db调用时都进行db调用是没有意义的。有没有一种方法可以使用一个异步任务的干净简单的实现在片段中的不同位置进行多个db调用,该任务可以处理所有这些问题?

类似这样的情况如何:

public interface DBRunnable {
    public void executeDBTask();
    public void postExecuteDBTask();
}

private class DBTask extends AsyncTask<DBRunnable, Void, DBRunnable> {
    @Override
    protected DBRunnable doInBackground(DBRunnable...runnables) {
        runnables[0].executeDBTask();
        return runnables[0];
    }

    @Override
    protected void onPostExecute(DBRunnable runnable) {
        runnable.postExecuteDBTask();
    }
}
    new DBTask().execute(new DBRunnable() {
        @Override
        public void executeDBTask() {
            // execute your db code here
        }

        @Override
        public void postExecuteDBTask() {
            // run your post execute code here
        }
    });

DBRunnables可以保存在一个地方,以使代码更易于阅读和维护。

有一个问题,如果我想根据正在进行的db调用执行不同的任务,该怎么办。我的意思是,如果我读一条记录还是写一条记录,我希望使用不同的OnPostExecute异步调用。我修改了我的示例,以展示如何使用OnPostExecute。如果希望能够一次运行多个DbRunnable,则需要将它们传递到DBTask的构造函数中,以便doInBackground()和onPostExecute()都可以循环运行这些Runnable。如果你这样做的话,AsyncTask的参数和结果就过时了,可能是无效的。很抱歉再次打开这篇文章,但这是最合适的答案,所以就这样吧。这是什么可运行文件[0]。ExecuteBTask();这意味着什么?如何做到这一点?postExecuteDBTask()在接口DBRunnable中定义,并由最后一段代码(new DBRunnable(){…})中定义的匿名类实现。它是运行实际db代码的类。