我正在实现一个非常简单的任务 - 用户授权。我通过AsyncTask实现的所有网络操作。我有一个问题。我有两个AsyncTasks - 一个是授权,它为所有网络任务操作(JSON解析,REST实现等)调用更低级别和通用,这也是通过AsyncTask实现的。我有一个问题:这两个操作的onPostExecute方法以错误的顺序调用。
所以问题 - 我可以设置执行的顺序,或者你可以给我一些建议如何以正确的方式处理所有这些。但不建议我拒绝AsyncTask并使用其他东西。我想要一个正确的AsyncTask解决方案。提前致谢。
答案 0 :(得分:1)
听起来你应该有一个AsyncTask
用于高级后台操作。应在高级doInBackground
中直接调用低级别网络活动。通过运行两个AsyncTask
,您将失去轻松协调其个人工作时间的能力。
如果出于某种原因,您需要在AsyncTask
中独立运行较低级别的操作(即,用于授权以外的目的),那么AsyncTask
也应该直接调用低级别的操作来自自己doInBackground
的网络活动;但是,低级活动仍应与任何AsyncTask
分开。
答案 1 :(得分:0)
运行tour 2. asyncTask in 1. first asyncTask onPostExecute方法。顺便说一句,你可以自己设定订单。
如下所示,
private class task1 extends AsyncTask<URL, Integer, Long> {
protected int doInBackground(URL... urls) {
// do your stuf
return 1;
}
protected void onPostExecute(int result) {
// first task finished and second task starts
new task2().execute();
}
}
private class task2 extends AsyncTask<URL, Integer, Long> {
protected int doInBackground(URL... urls) {
// do your stuf
return 1;
}
protected void onPostExecute(int result) {
// do your stuf
}
}