在我的应用程序,当点击登录页面登录,我要叫3层的API。我有3个AsyncTask来做这个要求。我正在做的是在第一个任务onPostExcecute()内调用第二个任务,第二个任务在onPostExecute()内部调用第三个任务。调用的AsyncTask创建延迟
TASKA样子:
private class TaskA extends AsyncTask<Void, Void, ListA> {
@Override
protected void onPreExecute() {
}
@Override
protected ListA doInBackground(Void... params) {
ListA listA;//its an arraylist
listA = //calling my API
if(listA != null) {
//writing listA as serialized into sdcard.
}
return listA;
}
@Override
protected void onPostExecute(ListA listA) {
for(ListAValues value : listA) {
new TaskB().execute(value);
}
}
}
TaskB:
private class TaskB extends AsyncTask<ListA, Void, ListB> {
@Override
protected void onPreExecute() {
}
@Override
protected ListB doInBackground(ListA... params) {
ListB listB;//its an arraylist
listB = //calling my API
if(listB != null) {
//writing listB as serialized into sdcard.
}
return listB;
}
@Override
protected void onPostExecute(ListB listB) {
new TaskC().execute(listB);
}
}
TaskC:
private class TaskC extends AsyncTask<ListB, Void, ListC> {
@Override
protected void onPreExecute() {
}
@Override
protected ListC doInBackground(ListB... params) {
ListC listC;//its an arraylist
listC = //calling my API
if(listC != null) {
//writing listC as serialized into sdcard.
}
return listC;
}
@Override
protected void onPostExecute(ListC listC) {
//moving to my landing page.
}
}
的问题是在登陆页面,屏幕与黑,白三色闪烁。 (白色是我的着陆页活动的背景颜色)。我正在执行的方式是正确的吗?或者我需要更改代码?请帮助我。
我想你需要实现'AsyncTask.Status'来检查以前启动的任务是否完成。在启动新的.check之前检查前一个任务的状态。 –