【发布时间】:2018-10-12 19:48:00
【问题描述】:
我在 Kotlin 中遇到了 AsyncTask 的问题,我实际上是新手,所以请冷静:)
所以这里的问题是,我想在另一个类中使用 onPostExecute() 中的结果值
让我给你看我的代码,这是我的 Provider.kt 文件中的 ProviderAsync() 类(我只是创建了一个我想要使用的 Hashmap 数组):
class ProviderAsync() : AsyncTask<HashMap<String, Any>, Void, ArrayList<HashMap<String, Any>>>() {
var allThings: ArrayList<HashMap<String, Any>> = arrayListOf()
override fun doInBackground(vararg params: HashMap<String, Any>): ArrayList<HashMap<String, Any>>? {
for (i in 0..2000) {
val thing = hashMapOf("Loc" to "fr", "name" to "class", "Id" to "23", "tuto" to "fr", "price" to 44)
allThings.add(thing )
}
return null
}
override fun onPreExecute() {
super.onPreExecute()
// ...
}
override fun onPostExecute(result: ArrayList<HashMap<String, Any>>?) {
super.onPostExecute(result)
// what can I do Here
}
现在这是我在另一个文件中的 getThings() 方法,我想在其中使用结果值来获取我的 Arraylist 的所有元素:
fun getThings(context: Context) {
ProviderAsync().execute()
var values = // Here i want the RESULT send from my AsyncTask
for (i in 0..values.size) {
var myObject = convertToMyObject(values[i])
allTickets.add(myObject)
}
}
感谢和抱歉我的英语
【问题讨论】:
-
首先让我知道您为什么不在要使用返回值的同一类中编写异步任务?
-
这是我的架构,我希望我的 Provider 执行 AsyncTask 并将数据发送给我的 Manager
-
参考this。
-
您为什么使用
HashMap<String, Any?>而不是class之类的东西?
标签: java android asynchronous android-asynctask kotlin