Android 在 AsyncTask kotlin 中从 doInBackGround() 获取结果
Android get result from doInBackGround() in AsyncTask kotlin
我正在制作一个函数来计算来自 android 设备的以“.mp3”结尾的文件,并且在从 AsyncTask 获取结果时遇到了麻烦。我怎么才能得到它?
这是我的 AsyncTask class
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)
}
}
这里是我在 activity
中的代码
fun countSongsOnDevice() {
if (!checkPermissionForReadExtertalStorage()) {
requestPermissionForReadExtertalStorage()
} else {
CountAsyncTask().execute()
//totalSongsOnDevice = ....
}
}
谢谢
您应该对“onPostExecute”方法中的结果做任何您想做的事情。此方法在 UI 线程上执行,因此您可以引用 UI 元素或您想要调用后台任务结果的任何逻辑。
最好的方法是从 onPostExecute 方法调用您的主要 activity 的某些方法,该方法使用结果显示给用户或您想要的任何内容
我正在制作一个函数来计算来自 android 设备的以“.mp3”结尾的文件,并且在从 AsyncTask 获取结果时遇到了麻烦。我怎么才能得到它? 这是我的 AsyncTask class
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)
}
}
这里是我在 activity
中的代码fun countSongsOnDevice() {
if (!checkPermissionForReadExtertalStorage()) {
requestPermissionForReadExtertalStorage()
} else {
CountAsyncTask().execute()
//totalSongsOnDevice = ....
}
}
谢谢
您应该对“onPostExecute”方法中的结果做任何您想做的事情。此方法在 UI 线程上执行,因此您可以引用 UI 元素或您想要调用后台任务结果的任何逻辑。
最好的方法是从 onPostExecute 方法调用您的主要 activity 的某些方法,该方法使用结果显示给用户或您想要的任何内容