Android-приложение вылетает без ошибки Stack Trace - PullRequest
0 голосов
/ 04 марта 2019

Я только начал с этим новым приложением и хотел посмотреть, получу ли я какой-либо ответ от Retrofit и распечатаю его в TextView.

Но приложение вылетает без какой-либо трассировки стека, поэтому никаких исключений ... просто ничего.

У меня есть интерфейс Retrofit и "Фабрика", которая создает запрос, который запускается в другом потоке через Kotlin Coroutine.

    class MainActivity : AppCompatActivity() {

    private lateinit var debugTextView: TextView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        debugTextView = findViewById(R.id.debugTextView)

        val service = RetrofitFactory.makeCarDataService()
        GlobalScope.launch(Dispatchers.Main) {
            val request = service.getData()

            val response = request.await()

            debugTextView.text =response.toString()

        }
    }
}

Я хотел бы опубликовать сообщение об ошибке ...но нет, все должно работать идеально: /

Ответы [ 4 ]

0 голосов
/ 06 марта 2019
Попробуйте это:
try {
    val request = service.getData()
    val response = request.await()
    debugTextView.text =response.toString()
} catch (e: RuntimeException) {
    e.printStackTrace()
} catch (t: Throwable) {
    t.printStackTrace()
}
0 голосов
/ 04 марта 2019

Я не очень знаком с сопрограммами, но вы пытались использовать основной поток только при установке текста в представлении?как то так:

val service = RetrofitFactory.makeCarDataService()
    GlobalScope.launch(Dispatchers.Default/*change here*/) {
        val request = service.getData()

        val response = request.await()
        /*change here*/
        withContext(Dispatchers.Main) {
            debugTextView.text = response.toString()
        }

    }
}
0 голосов
/ 04 марта 2019

Чтобы использовать Dispatchers.Main, нам нужно добавить следующую строку в зависимости файла build.gradle приложения:

реализация 'org.jetbrains.kotlinx: kotlinx-coroutines-android: 1.0.1 '

Отсутствие этой зависимости может быть причиной сбоя приложения без отслеживания стека.

0 голосов
/ 04 марта 2019

Без трассировки стека это возможные проблемы:

service.getData()

может бросить NullPointerException

debugTextView.text

может бросить NullPointerException

response.toString()

может броситьNullPointerException

...