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

问题是:html

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

 

我英语很差看不太懂,大体的了解了下缘由。java

 

以前个人代码是这样。android

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的时候出现了问题。web

 

而后我这样改了下,就ok了,ide

 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回调线程并非主线程。post

相关文章
相关标签/搜索