Я пытаюсь добавить сопрограммы в существующее приложение, но я не могу всю жизнь заставить это работать. Прежде всего, я net разработчик, которого попросили переписать приложение android, поэтому я стараюсь не оставаться в чистилище обратного вызова.
Я сделал следующее: добавил эти реализации в приложение build.gradle
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.50"
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.3'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.3'
Добавьте следующее в проект build.gradle Примечание - также убедитесь, что jcenter et c ... включены
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.10'
Синхронизация gradle c процесс работает как положено ...
Когда я go пишу какой-то код в приложении, я никогда не смогу заставить примеры в сети работать так, как ожидалось. Для начала, какого черта в веселье? Я получаю сообщение о том, что символ «веселье» не распознается. Есть какая-то ссылка, по которой мне не хватает этого. Кроме того, 'suspend' и 'val' также не распознаются, так что я предполагаю, что я тоже что-то там упустил.
Я нашел здесь пример, который, похоже, работал ...
BuildersKt.launch(
GlobalScope.INSTANCE,
Dispatchers.getMain(), // Run on the Main UI Thread
CoroutineStart.DEFAULT,
new Function2<CoroutineScope, Continuation<? super Unit>, Object>() {
@Override
public Unit invoke(CoroutineScope coroutineScope, Continuation<? super Unit> continuation) {
//do what you want
return Unit.INSTANCE;
}
}
);
Здесь много чего я не понимаю, и, если честно, синтаксис не выглядит супер чистым.
Я надеялся написать что-то вроде следующего :
suspend fun computeValue(): String = coroutineScope {
val one = async { computeOne() }
val two = async { computeTwo() }
combineResults(one, two)
}
Честно говоря, у меня много проблем с поиском документации о том, как сделать это правильно. Кто-нибудь может привести пример? Я ищу полный пример, подобный следующему ...
implementation 'ord.every.single.needed.dependency.listed'
public class StringManager {
public String getString1() {
return "String1";
}
public String getString2() {
return "String2";
}
}
// Are any decorators necessary
// Do I have to implement or extend anything
MainActvity {
public void Test() { // does this have to be a fun? if so how do I actually get the compiler to understand what fun is?
String val1 = async { stringManager.getString1(); }
String val2 = async { stringManager.getString2(); }
}
}
Опять, пожалуйста, имейте в виду, я не собираюсь становиться экспертом по разработке java и android, просто ищу пример того, как это запустить. Кроме того, если у вас есть какая-либо справочная документация или учебные пособия в Интернете, которые могут предоставить дополнительную информацию для начала, это будет очень полезно ...