0

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

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

4

1 回答 1

2

像这样的东西怎么样:

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 可以保存在一个地方,以使代码更易于阅读和维护。

于 2013-07-30T16:20:46.870 回答