Как я могу создавать многоразовые сопрограммы? ⇐ Android
Как я могу создавать многоразовые сопрограммы?
Мне хотелось бы узнать больше о Kotlin, поэтому я решил написать этот пост. Я не знаю, что мне сейчас делать со своим проектом.
Сценарий прост: у нас есть вызов API, SwipeRefreshLayout и LAZY сопрограмма.
Предположим, мы запустили LAZY coroutine, которая отвечает за запуск вызова API в ViewModel и наблюдение за ответом как MutableLiveData. Теперь, если пользователь обновит Layout и после некоторых действий потребуется выполнить еще один вызов API, считается ли хорошим подходом использовать для этого Job?
Как известно, сопрограммы нельзя использовать повторно, но мне удалось повторно запустить это конкретное Job.
Пример:
Private val someJob: Job get() = viewLifecycleOwner.lifecycleScope.launch(start = CoroutineStart.LAZY) { someViewModel.performApiCall() someViewModel.responseMLD.observe(viewLifecycleOwner, Observer { someObj -> когда (someObj) { это оболочка. Успех -> { //делать... } это оболочка. Ошибка -> { Лог.е( ЯРЛЫК, "что-то пошло не так" ) } } }) } .... myBind.refreshLayout.setOnRefreshListener { по умолчаниюViewsSetup() myBind.refreshLayout.isRefreshing = false }
Мне хотелось бы узнать больше о Kotlin, поэтому я решил написать этот пост. Я не знаю, что мне сейчас делать со своим проектом.
Сценарий прост: у нас есть вызов API, SwipeRefreshLayout и LAZY сопрограмма.
Предположим, мы запустили LAZY coroutine, которая отвечает за запуск вызова API в ViewModel и наблюдение за ответом как MutableLiveData. Теперь, если пользователь обновит Layout и после некоторых действий потребуется выполнить еще один вызов API, считается ли хорошим подходом использовать для этого Job?
Как известно, сопрограммы нельзя использовать повторно, но мне удалось повторно запустить это конкретное Job.
Пример:
Private val someJob: Job get() = viewLifecycleOwner.lifecycleScope.launch(start = CoroutineStart.LAZY) { someViewModel.performApiCall() someViewModel.responseMLD.observe(viewLifecycleOwner, Observer { someObj -> когда (someObj) { это оболочка. Успех -> { //делать... } это оболочка. Ошибка -> { Лог.е( ЯРЛЫК, "что-то пошло не так" ) } } }) } .... myBind.refreshLayout.setOnRefreshListener { по умолчаниюViewsSetup() myBind.refreshLayout.isRefreshing = false }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Подавить стандартный вывод сопрограммы, не затрагивая другие сопрограммы в Python
Anonymous » » в форуме Python - 0 Ответы
- 24 Просмотры
-
Последнее сообщение Anonymous
-