Android: Задача последовательная на поток в JAVA
Иметь случай использования, где BroadcastReceiver
События действия получены и нужно выполнять их в последовательном порядке.
Здесь, как показано ниже, Event1 и Event2 могут быть получены вплотную. Работа на Event1 должна быть завершена, а затем должна начаться работа на Event2.
Как сделать это последовательно?
BroadcastReceiver{
onReceive(){
Event1:
Task1 doing Something different.//Cant run network operations here.
Event2:
Task2 doing Something different.//Cant run network operations here.
}
}
executors.newsinglethreadexecutor()
или же handlerthread
это вариант, на который я смотрю... какой-нибудь другой хороший способ сделать это?
2 ответа
Решение
Обнаружено, что executors.newsinglethreadexecutor() или handlerthread оба могут обрабатывать задачу последовательно.
У меня есть решение, но я не знаю, есть ли лучшее решение, чем это или нет
ну по крайней мере это работает
использовать Asyntask с вашими событиями
public class Event1 extends AsyncTask<Void,Void,Void>{
@Override
protected Void doInBackground(Void... params) {
//use your Event 1 methode here
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
//call Event2
Event2 event2=new Event2();
event2.execute();
}
}
public class Event2 extends AsyncTask<Void,Void,Void>{
@Override
protected Void doInBackground(Void... params) {
//use your Event 2 methode here
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
//call Event3
Event3 event3=new Event3();
event3.execute();
}
}
public class Event3 extends AsyncTask<Void,Void,Void>{
@Override
protected Void doInBackground(Void... params) {
//use your Event3 methode here
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
//everything would come after Event 3 write it here
}
}