Anko 执行 sqlite 请求但不执行下一行
Anko's execute the sqlite request but don't execute the next lines
我想在 Android 上对我的内部数据库发出请求,但是当我的请求 Anko 完成后,UiThread 中的行不会立即完成。
为了解释发生了什么,行 "Log.d" 在 UiThread
之前执行
你能帮帮我吗?
for(i in 0 until jsonArrayM.length()) {
val json = jsonArrayM.getJSONObject(i)
doAsync {
val carteByName = bdd.getDatasByName(json.get("role").toString())
uiThread {
json.put("id", carteByName[0].id)
json.put("image", carteByName[0].imageCarte)
json.put("nuit1", carteByName[0].premiereNuit)
json.put("posNuit1", carteByName[0].positionPremiereNuit)
json.put("autresNuits", carteByName[0].nuitSuivante)
json.put("posAutresNuits", carteByName[0].positionNuitSuivante)
}
}
jsonArray.put(json)
}
Log.d("Verif", jsonArray.toString())
doAsync
中的块在后台线程中 异步完成 ,而 uiThread
中的块仅在异步块的末尾完成(但在 UI/Main 线程上)。
另一方面,Log
在循环后同步执行。
所以预计async块里面的代码是在同步代码之后执行的。
我想在 Android 上对我的内部数据库发出请求,但是当我的请求 Anko 完成后,UiThread 中的行不会立即完成。
为了解释发生了什么,行 "Log.d" 在 UiThread
之前执行你能帮帮我吗?
for(i in 0 until jsonArrayM.length()) {
val json = jsonArrayM.getJSONObject(i)
doAsync {
val carteByName = bdd.getDatasByName(json.get("role").toString())
uiThread {
json.put("id", carteByName[0].id)
json.put("image", carteByName[0].imageCarte)
json.put("nuit1", carteByName[0].premiereNuit)
json.put("posNuit1", carteByName[0].positionPremiereNuit)
json.put("autresNuits", carteByName[0].nuitSuivante)
json.put("posAutresNuits", carteByName[0].positionNuitSuivante)
}
}
jsonArray.put(json)
}
Log.d("Verif", jsonArray.toString())
doAsync
中的块在后台线程中 异步完成 ,而 uiThread
中的块仅在异步块的末尾完成(但在 UI/Main 线程上)。
另一方面,Log
在循环后同步执行。
所以预计async块里面的代码是在同步代码之后执行的。