虽然循环在设备上无法正常运行,但在仿真器中可以正常工作

问题描述 投票:0回答:1

虽然循环在设备中无法正常运行,但在仿真器中效果很好。有什么问题?下面是我的代码,

 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)
    }
android
1个回答
0
投票

您必须使用线程或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()
© www.soinside.com 2019 - 2024. All rights reserved.