Kotlin сопрограмм И Java Проблемы - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь добавить сопрограммы в существующее приложение, но я не могу всю жизнь заставить это работать. Прежде всего, я 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, просто ищу пример того, как это запустить. Кроме того, если у вас есть какая-либо справочная документация или учебные пособия в Интернете, которые могут предоставить дополнительную информацию для начала, это будет очень полезно ...

...