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
        }
    }

Другие вопросы по тегам