android - 如何监听属性更新状态 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)
}
解决方案
如果我理解正确,您想知道何时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
}
}
如果您还有其他问题,请告诉我。
推荐阅读
- java - 将 pojos 列表合并到可以在键上组合的整数 Map
- reactjs - 如何在“renderToString”中传递动态组件以转换为字符串
- apache-spark - 通过添加新集群扩展 Spark 应用程序
- c# - ASP.NET Core AWS 无服务器和 CORS
- paypal - 贝宝信用卡按钮隐藏贝宝标准按钮
- shell - shell脚本负载平均cpu
- webdriver - Appium:使用意图启动 android 应用程序?
- ios - 我没有在 WKWebview 中获得一个网页按钮的点击事件,以及如何使用 java 脚本将点击事件添加到 wkwebview
- data-structures - 带有内存的集合的数据结构的名称是什么?
- django - Django注销按钮引导导航栏