WebView loadUrl runs asynchronous task to load given URL. There is a button which has onClick method with invoking loadURL method. WebView uses JavascriptInterface - particular method is invoked by onload event ( ). I want lock access to object before loadURL and unlock in JavascriptInterface method. Is it enough to put loadUrl in synchronized block?
EDIT:
Loading WebView
mRenderReceiptWebView = (WebView) findViewById(R.id.receiptWebView);
mRenderReceiptWebView.getSettings().setJavaScriptEnabled(true);
mRenderReceiptWebView.getSettings().setPluginState(PluginState.OFF);
mRenderReceiptWebView.getSettings().setAllowFileAccess(false);
mRenderReceiptWebView.setVisibility(View.VISIBLE);
mRenderReceiptWebView.setWebChromeClient(new WebChromeClient(){
@Override
public boolean onConsoleMessage(ConsoleMessage cm)
{
Log.d("ShowMote", cm.message() + " -- From line "
+ cm.lineNumber() + " of "
+ cm.sourceId() );
return true;
}
});
mRenderReceiptWebView.setDrawingCacheEnabled(true);
mRenderReceiptWebView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
mRenderReceiptWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
mRenderReceiptWevView.addJavascriptInterface(new JavaScriptInterface(),
"Android"); receiptWebView.loadUrl(url);
JavaScriptInterface function
public JavaScriptInterface(){
@JavascriptInterface
public void funJS() {}
}
html body onload
<body onload="(function(){ Android.funJS();}());">