看下面的代码,我把网络请求和本地数据库写操作放在一起的方法相同。
ConcurrentAsyncTask.execute(new Runnable() {
@Override
public void run() {
Pair<String, String> rlt = null;
try {
rlt = sc.createNewDir(repoID, parentDir, dirName);
} catch (SeafException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String newDirID = rlt.first;
String response = rlt.second;
// The response is the dirents of the parentDir after creating
// the new dir. We save it to avoid request it again
mDatabaseHelper.saveDirents(repoID, parentDir, newDirID, response);
}
});
sc.createNewDir()
用于请求网络请求,mDatabaseHelper.saveDirents()
用于将数据写入数据库。
我想知道它是否违反了AsyncTask的编程规则。
等待你的建议,谢谢!
答案 0 :(得分:0)
在单个AsyncTask中运行不同的后台操作没有任何问题,特别是当这些操作在逻辑上连接时 - 在您的情况下,网络操作会为数据库操作生成输入,您也总是希望将网络操作结果存储到数据库中。 / p>