虽然循环在设备中无法正常运行,但在仿真器中效果很好。有什么问题?下面是我的代码,
val query = database?.createAllDocumentsQuery()
query?.startKey = "refill-device-SERIAL-AB121-0"
query?.endKey = "refill-device-SERIAL-AB121-7"
var result: QueryEnumerator? = null
result = query?.run()
val it = result
if (it != null) {
while (it.hasNext()) {
val row = it.next()
if (row.documentId.startsWith("refill-device-SERIAL-")) {
obj = JSONObject(row.document.properties)
val canisters = gson.fromJson(obj.toString(), Canisters::class.java)
arrayList.add(canisters)
}
}
canistersArrayList.postValue(arrayList)
}
您必须使用线程或asynctask进行长时间运行的操作。有时,这种长时间运行的操作在模拟器上可以正常运行,但在真实设备上则无法运行。如果有,logcat中是否有任何日志,也请发布它们。
AsyncTask看起来像这样
class queryTask() : AsyncTask<Void, Void, ArrayList>() {
override fun doInBackground(vararg params: Void?): String? {
val query = database?.createAllDocumentsQuery()
query?.startKey = "refill-device-SERIAL-AB121-0"
query?.endKey = "refill-device-SERIAL-AB121-7"
var result: QueryEnumerator? = null
result = query?.run()
val it = result
if (it != null) {
while (it.hasNext()) {
val row = it.next()
if (row.documentId.startsWith("refill-device-SERIAL-")) {
obj = JSONObject(row.document.properties)
val canisters = gson.fromJson(obj.toString(), Canisters::class.java)
arrayList.add(canisters)
}
}
return arrayList
}
}
override fun onPreExecute() {
super.onPreExecute()
}
override fun onPostExecute(result: ArrayList?) {
super.onPostExecute(result)
canistersArrayList.postValue(result)
}
}
并且像]执行它>
queryTask().execute()