0

Я пытаюсь запустить некоторые методы, когда кнопка нажата, а затем перейти к следующему деятельности что-то вроде этого:Запуск асинхронных задач в порядке с использованием AA?

Clicked Ok button -> func1() -> func2() -> funky() -> move to next activity

я не могу понять, что я должен сделать, чтобы сделать этот шаблон работы?

Примечание: func1, func2, фанк является асинхронным

Я попытался EventBus шаблона, но шаблон требует 1 экстра класса должны быть сделан из каждого event я знаю, что это простая задача не может быть то, что дорого

+0

Любые комментарии к вашему [предыдущему вопросу] (http://stackoverflow.com/questions/39055585/retrofit-otto-aa-how-to-do-simple-get-request)? Тот же комментарий там: AA, похоже, не проблема - поток выполнения кода. –

+0

@ cricket_007 после некоторого тщательного анализа, я думаю, что моя проблема в том, что я перечислил в этом вопросе, АА - это просто вспомогательный класс –

ответ

2

Button click - Это асинхронный (в некотором роде код внутри onClick не вызывается до тех пор, пока кнопка не нажмет). Что ты здесь делаешь? Вы ждите до тех пор, пока кнопка не будет нажата, и затем выполните задачу func1().

func1() - Такая же идея. Внедрить обратный вызов для завершения задачи, затем выполнить func2()

Промыть, повторить.

Psuedocode:

button.setOnClickListener(
    new OnClickListener() { // This is a callback anonymous class 
     public void onClick(View v) { // Think of this as a callback method 
      func1(
       new Func1Callback() { // Callback anonymous class 
        public void onFunc1Complete() { // Callback method 
         func2(
          // Repeat 
         ); 
        } 
      }); 
     } 
}); 

Очевидно, что это может быть переработан, чтобы удалить вложение, которое где библиотека EventBus приятно.

+0

, похоже, не может понять, что вы явно видите какой-либо пример –

+0

Спасибо, его хорошая идея –

+0

Функционально, да, это приятно , но может быстро запутаться. Часть, которая является лучшей IMO, заключается в том, что из внутреннего метода обратного вызова вы просто вызываете некоторую функцию 'finish()', которая объявляется на уровне класса и передает любые параметры, которые вам нужны. –

 Смежные вопросы

  • Нет связанных вопросов^_^