Asynctask используется для выполнения длительных операций.
Если вы уже используете одну asynctask, вам не нужна другая asynctask.Попробуйте поместить весь этот второй асинхронный код в первый.
public void doInBackground(){
//Sample1
//Dependent code waiting for sample1 to finish
}
Вы можете подождать, пока какой-то код завершит работу, и вы сможете ввести его в другой фрагмент кода, все внутри только одной асинктаск.Чтобы вернуть некоторый код в MainActivity из asynctask, используйте функцию обратного вызова с использованием интерфейса.
- Создание интерфейса
public interface MyTaskCallback{
void myResultData();
}
Реализация интерфейса в пункте назначения.В вашем случае MainActivity является пунктом назначения.
public void MainActivity extends AppCompatActivity implements MyTaskCallback{
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//Start the task. Pass interface reference in the constructor of the task
new MyTask(MainActivity.this).execute();
}
}
Передать ссылку интерфейса в AsyncTask Constructor из Activity
public void MyTask extends AsyncTask<Void, Void, Void>{
private MyTaskCallback myTaskCallback;
public MyTask(myTaskCallback){
this.myTaskCallback = myTaskCallback;
}
public void onPostExecute(){
if(myTaskCallback != null)
myTaskCallback.myResultData();
}
}