Delegate.BeginInvoke () асинхронно ставит в очередь вызов делегата и немедленно возвращает управление. При использовании Delegate.BeginInvoke () вы должны вызывать Delegate.EndInvoke () в методе обратного вызова, чтобы получить результаты.
Delegate.Invoke () синхронно вызывает делегата в том же потоке.
Хорошо с Kotlin можно сделать это только в одной строке кода:
resources.openRawResource(R.raw.rawtextsample).bufferedReader().use { it.readText() }
Или даже объявляют дополнительную функцию:
fun Resources.getRawTextFile(@RawRes id: Int) =
openRawResource(id).bufferedReader().use { it.readText() }
И затем просто используют его сразу:
val txtFile = resources.getRawTextFile(R.raw.rawtextsample)