【发布时间】:2021-09-21 07:09:45
【问题描述】:
我正在制作一个函数来计算来自 android 设备的以“.mp3”结尾的文件,并且在从 AsyncTask 获取结果时遇到了麻烦。我怎么才能得到它? 这是我的 AsyncTask 类
class CountAsyncTask: AsyncTask<String, Int, Int>() {
private val root = Environment.getExternalStorageDirectory().path + "/Zing MP3"
override fun doInBackground(vararg params: String?): Int {
val a: ArrayList<File> = ArrayList()
val files = File(root).listFiles()!!
for (i in files.indices) {
if (files[i].name.endsWith(".mp3"))
a.add(files[i])
}
Log.e("Counting", a.size)
return a.size
}
override fun onPostExecute(result: Int?) {
super.onPostExecute(result)
}
override fun onProgressUpdate(vararg values: Int?) {
super.onProgressUpdate(*values)
}
}
这是我的活动代码
fun countSongsOnDevice() {
if (!checkPermissionForReadExtertalStorage()) {
requestPermissionForReadExtertalStorage()
} else {
CountAsyncTask().execute()
//totalSongsOnDevice = ....
}
}
谢谢
【问题讨论】:
-
你忘了提到代码的问题。你有没有得到任何错误或异常?
AsyncTask也已弃用,您可能想切换到备用 API。 -
请提及您遇到的错误。
-
我在调试时得到了大小,但我不知道如何将结果传递给活动。
-
AsyncTask 已弃用。现在可能是您开始转向协程的好时机。
标签: android kotlin android-asynctask