java.lang.RuntimeException:java.lang.Throwable:A WebView method was caled on thread'JavaBridge'
3656 ワード
エラーコード
私はwebviewでページを読み込む時にこのように書いたからです.
ソリューション
Stocoverflowで正解を見つけました.http://stackoverflow.com/questions/22607657/webview-methods-on-same-thread-error
FATAL EXCEPTION: JavaBridge
Process: violetjack.smartinfusion, PID: 31227
java.lang.RuntimeException: java.lang.Throwable: A WebView method was called on thread 'JavaBridge'. All WebView methods must be called on the same thread. (Expected Looper Looper (main, tid 1) {4186a978} called on Looper (JavaBridge, tid 385) {41a24830}, FYI main Looper is Looper (main, tid 1) {4186a978})
at android.webkit.WebView.checkThread(WebView.java:2082)
at android.webkit.WebView.loadUrl(WebView.java:803)
...
エラーの原因私はwebviewでページを読み込む時にこのように書いたからです.
private void callChangeStartTime(final String time){
String call = "javascript:changeStartTime(\"" + time + "\")";
wvContent.loadUrl(call);
}
最初は4.2のマシンにこの問題がなかったです.4.4のマシンにこの問題が発生しました.ソリューション
Stocoverflowで正解を見つけました.http://stackoverflow.com/questions/22607657/webview-methods-on-same-thread-error
runOnUiThread(new Runnable() {
@Override
public void run() {
final WebView webView = (WebView) findViewById(R.id.map);
webView.loadDataWithBaseURL(...);
}
});
つまり、webviewのloadUrl
方法をrunOnUiThread
に書いたら問題が解決できるということです.私が作ったとおりです.private void callChangeStartTime(final String time){
runOnUiThread(new Runnable() {
@Override
public void run() {
String call = "javascript:changeStartTime(\"" + time + "\")";
wvContent.loadUrl(call);
}
});
}