Приложение Kotlin Android Studio продолжает падать в классе AsyncTask - PullRequest
0 голосов
/ 10 июня 2018

Я пытаюсь загрузить файл XML, но приложение продолжает загружаться в загрузчике (как ни странно, оно возвращается к MainActiivty непосредственно перед сбоем).Вот код: В onCreate:

importButton.setOnClickListener {

        downloadData()
}

Позже, в классе занятий

fun downloadData() {
    val cd = XMLDownloader()
    cd.execute(sInf!!.getURLprefix(),sInf!!.getSetID().toString())
}

private inner class XMLDownloader : AsyncTask<String, Int, String>() {
    override fun doInBackground(vararg params: String?): String {

        try {
            val url = URL(params[0]+params[1]+".xml")
            val connection = url.openConnection()
            connection.connect()
            val lenghtOfFile = connection.contentLength
            val isStream = url.openStream()
            val testDirectory = File("$filesDir/XML")
            if (!testDirectory.exists()) testDirectory.mkdir()
            val fos = FileOutputStream("$testDirectory/"+params[1]+".xml")
            val data = ByteArray( 1024)
            var count = 0
            var total: Long = 0
            var progress = 0
            count = isStream.read(data)
            while (count != -1) {
                total += count.toLong()
                val progress_temp = total.toInt() * 100 / lenghtOfFile
                if (progress_temp % 10 == 0 && progress != progress_temp) {
                    progress = progress_temp
                }
                fos.write(data, 0, count)
                count = isStream.read(data)
            }
            isStream.close()
            fos.close()
        } catch (e: MalformedURLException) {
            return "Malformed URL"
        } catch (e: FileNotFoundException) {
            return "File not found"
        } catch (e: IOException) {
            return "IOException"
        }
        return "success"
    }
}

Что может пойти не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...