Android 利用webview开发webApp和本地交互出现的一个问题

问题是:

A WebView method was called on thread 'JavaBridge'. All WebView methods must be called on the same 

我英语不好看不太懂,大致的了解了下原因。

之前我的代码是这样。

1   @JavascriptInterface
2         public void  needLogin(String username,String password)  {
3           if (username.equals("abc")&&password.equals("123")){
4               Toast.makeText(MainActivity.this,"登录成功",Toast.LENGTH_SHORT).show();
5               webView.loadUrl("file:///android_res/raw/test1.html");
6           }else {
7               Toast.makeText(MainActivity.this,"登录失败",Toast.LENGTH_SHORT).show();
8           }
9         }

运行就错了,就是在webView重新loadUrl的时候出现了问题。

然后我这样改了下,就ok了,

 1   @JavascriptInterface
 2         public void  needLogin(String username,String password)  {
 3           if (username.equals("abc")&&password.equals("123")){
 4               Toast.makeText(MainActivity.this,"登录成功",Toast.LENGTH_SHORT).show();
 5               webView.post(new Runnable() {
 6                   @Override
 7                   public void run() {
 8                       webView.loadUrl("file:///android_res/raw/test1.html");
 9                   }
10               });
11             
12           }else {
13               Toast.makeText(MainActivity.this,"登录失败",Toast.LENGTH_SHORT).show();
14           }
15         }

我想大家肯定猜到了什么了。webView会checkThread,导致不行,因为在js调用后的Java回调线程并不是主线程。

原文地址:https://www.cnblogs.com/itpepe/p/4881953.html