Android как использовать Kotlin -Программу в Java? - PullRequest
0 голосов
/ 16 апреля 2020

Недавно я изучаю kotlin-coroutine, следуя этому учебному пособию CodeLabs . После некоторых раздумий мне стало интересно, смогу ли я использовать тот же код в java. Итак, сначала я написал простой kotlin код в MyKotlinFragment.kt файле, например:

import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch

// ... some codes

    private fun myKoroutineDemo(){
        GlobalScope.launch {
            val result1:Int = foo();
            val result2:Int = bar();
            val result3 = result1 + result2;
            Log.e(TAG, ""+result3);
        }
    }

    suspend fun foo():Int{
        delay(2000);
        var result = 2+2;
        delay(500);
        return result;
    }

    suspend fun bar():Int{
        delay(2000);
        var result = 7-2;
        delay(500);
        return result;

    }

И назвал myKotlinDemo() в моем фрагменте; это работает.

Затем я открыл java файл с именем MyCoroutineFragment.java в том же проекте, но я не могу заставить его работать.

import kotlinx.coroutines.delay;     
import kotlinx.coroutines.launch;   // delay and launch imports arenot fount and so they are red

private suspend int foo(){ return 2 + 2; }
// the `suspend` keyword is not found by android studio, same with the bar method

private void myCoroutineDemo(){
  // GlobalScope.launch don't show up here, 
}

Я не могу преобразовать первый файл в java. Может кто-нибудь показать мне, как это исправить?

Если конвертировать невозможно, почему и как еще я могу использовать сопрограмму в java? Я открыт для всех решений.

1 Ответ

0 голосов
/ 16 апреля 2020

Для сопрограмм в Java вопросе отметьте этот вопрос в stackOverflow .

Но, по моему скромному мнению , используйте другие инструменты для асинхронного вызова ( например, RX java). Ты будешь страдать от обратных вызовов, но я думаю, что все будет хорошо.

Но помните, что не следует использовать AsyncTask , поскольку теперь устарело .

Счастливое кодирование 101

...