Articles of асинхронный

Android: запустите 4 async-задачи (которые работают с Rest API), подождите и начните еще одно действие после выполнения всех задач

У меня проблема с асинхронными задачами. Я пытаюсь запустить 4 асинхронных задачи, которые извлекают данные из last.fm rest api. Мои задачи: Выполнять 4 задания (количество не имеет значения, но должно быть больше 1) асинхронно или параллельно Получить данные из last.fm rest api (для получения данных из last.fm api у меня есть java-библиотека de.umass.lastfm) Подождите завершения […]

правильное поведение сопрограмм?

Я начинаю kotlin и не уверен, что я правильно реализовал модель производителя и потребителя kotlin coroutines? @RestrictsSuspension interface Producer<in T> { suspend fun yield(value: T); } fun <T> produce(context: CoroutineContext = EmptyCoroutineContext, building: suspend Producer<T>.() -> Unit): Supplier<T> { val (NOT_READY, READY, DONE) = arrayOf(-1, 2, 3); val producer = object : Producer<T>, Continuation<Unit>, Supplier<T> […]

почему обработчик исключений coroutine удваивает исходное исключение?

Я реализую свой собственный async процесс, я не могу правильно обработать исключение. Зачем? val expected = IllegalStateException(); val it = async<Any> { throw expected; }; assert.that({ it.get() }, throws(equalTo(expected))); // ^— but it throws a IllegalStateException(cause = expected) Исходный код interface Response<in T> { suspend fun yield(value: T); } interface Request<out T> { fun get(): […]

Как правильно показать прогресс асинхронных задач, используемых Google Room

Я использую Google Room для реализации сохранения данных в своем приложении для Android (код Котлина). Комната требует, чтобы все операции (запросы в базу данных и из базы данных) были асинхронными. Я хотел бы, чтобы пользователь дождался выполнения операции, не позволяя ему взаимодействовать с компонентами, которые не были бы настроены должным образом до конца запроса. Как […]

Анко не запускается

В настоящее время я использую Anko's doAsync для обработки асинхронных задач. В частности, я использую его для анализа ответа json на ArrayList объектов данных, как показано ниже: // Asynchronously parse server response doAsync { val itemlist = parseResponse(response) uiThread { Otto.INSTANCE.post(UpdateRedeemedVoucherViewsEvent(itemlist)) } } В большинстве случаев, например, на Google Pixel (Android 8.0.0) , это работает […]

Как: стрелять и забывать асинхронные сопрограммы в Котлине

Я читал на койлинах Котлина, но не нашел ответа на конкретную проблему. Скажем, я хочу перебирать коллекцию, создавая вызов API для каждого элемента (в этом конкретном случае нажатие файла на Amazon S3). Я хочу, чтобы эти вызовы обрабатывались асинхронной сопрограммой, чтобы не блокировать основной поток во время ожидания. Мне не требуется возвращаемое значение из запроса, […]

Kotlin / anko несколько асинхронных задач

Я ищу простой способ запустить несколько задач параллельно и дождаться завершения всех этих действий. Рассмотрим этот пример c #: private static void Main(string[] args) { var urlList = new[] {"http://www.microsoft.com/", "http://www.google.com/", "http://www.apple.com/" }; var result = GetHtml(urlList); } private static List<string> GetHtml(string[] urlList) { var tasks = new List<Task>(); var output = new List<string>(); foreach […]

Kotlin весело возвращается преждевременно

Я пытаюсь начать работу с Android, используя Kotlin. Часть того, что я пытаюсь сделать, это отправить HTTP-запрос из моей активности входа и предпринять соответствующие действия из ответа. Я использую Fuel для этого. Когда нажата кнопка «Войти», я вызываю следующее fun : private fun disableInput() { username_input.isEnabled = false password_input.isEnabled = false sign_in_button.isEnabled = false login_progress.visibility […]

Как использовать асинхронный Kotlin и ждать факториалов?

У меня есть эта функция в Kotlin (приложение для Android): tailrec fun factorial(n: BigInteger, remainder: BigInteger = BigInteger.ONE) : BigInteger{ if(n== BigInteger.ZERO) return remainder else { return factorial(n – BigInteger.ONE, remainder * n) } } и этот простой код: button.setOnClickListener { val n = editTextT.text.toString() val result: BigInteger = factorial(BigInteger(n)) textView.text = "$n! is $result" […]

Лучший способ применить преобразование к каждому элементу в списке одновременно в Котлине

В основном я пытаюсь применить долгосрочное преобразование к списку элементов в Котлине. Прямо сейчас я использую функцию .map, но это приводит к тому, что все преобразования запускаются последовательно, когда мне нужно, чтобы они запускались одновременно из-за времени. Вот как это работает сейчас: async { val list = await { list.execute().items.map { initialValue -> getResultAfterALongTime(initialValue) }} […]