0
我意识到一个将HTML文件加载到WebView的Android程序,该HTML文件加载Leaflet.js,该文件根据您提供的提供程序显示不同样式的地图。在WebView中加载HTML文件后执行JavaScript指令
我在OnCreate()方法加载页面指令:
myWebView.loadUrl("file:///android_asset/test.html");
在那之后,我需要采取不同的地图列表由一个处理程序(与类名JavascriptInterface.java),我加入的WebView这样的:
myWebView.addJavascriptInterface(new JavaScriptInterface(this, myWebView), "MyHandler");
最终的代码需要看起来像这样:
myWebView.loadUrl("file:///android_asset/test.html");
myWebView.loadUrl("javascript:window.MyHandler.getMaps()");
问题是第一个loadUrl()速度不够快,所以第二个loadUrl会在映射初始化之前进行,导致很多问题。
临时,也太可怕了,解决方案,我发现是举行第二使用loadURL 1秒钟执行前,像这样:
myWebView.loadUrl("file:///android_asset/test.html");
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
// Actions to do after 1 second
myWebView.loadUrl("javascript:window.MyHandler.getMaps()");
}
}, 1000);
有一个又一个执行指令的一种更好的方式?我已经尝试使用ASyncTask,但有可能我没有很好地实现它。
谢谢您的回答! –