Невозможно вызвать код сопрограммы Kotlin из кода Java - PullRequest
0 голосов
/ 12 июня 2019

В build.gradle;

ext.KOTLIN_COROUTINE_VERSION = '1.3.0-M1'

в app / build.gradle:

я

mplementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2'
    implementation 'com.yuyh.json:jsonviewer:1.0.6'
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$KOTLIN_VERSION"
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$KOTLIN_COROUTINE_VERSION"
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$KOTLIN_COROUTINE_VERSION"

В моем приложении для Android у меня есть код Котлина в TestActivity.kt :

val traderMonitorRestClient = RestClientFactory.createRestClient(TraderMonitorRestClient::class.java)

        GlobalScope.launch(Dispatchers.Main) {
            val traidersListDeffered = traderMonitorRestClient.getTraidersList2()
            try {
                val response: Response<List<Trader>> = traidersListDeffered.await()
                // call after return response (e.g. after 10 seconds)
                Debug.d(TAG, "onCreate_after_wait")
                if (response.isSuccessful) { // Returns true if {@link #code()} is in the range [200..300). */
                    val responseAsString = response.body().toString()
                } else {
                    Debug.d(TAG, "onCreate_response_error = $response.code()")
                }
            } catch (e: HttpException) {
                Debug.e(TAG, e.message, e)
            } catch (e: Throwable) {
                Debug.e(TAG, e.message, e)
            }
        }
    }

Nice. Это нормально работает.

Теперь я хочу использовать тот же код в Java-файле - TradersViewModel.java

Я пытаюсь это:

    import kotlinx.coroutines.Dispatchers;
    import kotlinx.coroutines.GlobalScope;

public class TradersViewModel extends ViewModel {

    private void loadData() {
            TraderMonitorRestClient traderMonitorRestClient = RestClientFactory.createRestClient(TraderMonitorRestClient.class);
            GlobalScope.launch(Dispatchers.getMain()) {

            }
        }

}

Но у меня есть ошибка компиляции:

Cannot resolve method 'launch(kotlinx.coroutines.MainCoroutineDispatcher)
...