首页 > 解决方案 > 如何监听属性更新状态 o android

问题描述

我的应用程序使用带有 JavaScript 库的 WebView 并且我启用了, addJavascriptInterface所以我可以使用模式访问或发送信息到 JavaScript 文件,问题是,我无法控制它所请求的信息,没有回调来确保它被调用了,所以有什么我可以“附加”到任何属性并监听状态是否改变然后制定逻辑的东西?我正在做的方式是等待 4 秒以确保发出请求,但效率不高。

 webview.loadUrl("file:///android_asset/installments.html")

        Timer().schedule(object : TimerTask() {
            override fun run() {
                val type = object : TypeToken<MutableList<Installments>>() {}.type
                var response: MutableList<Installments>? = Gson().fromJson(pay.installments!!, type)
                if (response != null) {
                    for (i in 0 until response.size){
                        installments.add(response[i].recommended_message)
                    }

                    val adapterInstallments = ArrayAdapter<String>(requireContext(),
                        android.R.layout.simple_spinner_item,
                        installments)

                    activity!!.runOnUiThread {
                        spinner.adapter = adapterInstallments
                        adapterInstallments.notifyDataSetChanged()
                    }

                }
            }
        }, 4000)
    }

标签: androidkotlin

解决方案


如果我理解正确,您想知道何时webview完成加载其内容。

而不是强迫它等待 4 秒,因为加载可能需要超过 4 秒(例如糟糕的互联网连接),您可以将 a 添加listener到 awebview以检测它何时完成加载。

试试下面的示例代码:

webview.webViewClient = object : WebViewClient() {
    override fun onPageFinished(view: WebView?, url: String?) {
        // called after webview finished loading
        // place here the logic to call after webview loads
    }
}

如果您还有其他问题,请告诉我。


推荐阅读