zoukankan      html  css  js  c++  java
  • 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回调线程并不是主线程。

  • 相关阅读:
    ubuntu查看软件安装位置
    es search
    es
    Elasticsearch 之python
    用户登陆注册,修改密码
    Django基础—— 9.ORM机制讲解
    Django基础—— 8.数据库配置
    Django基础—— 7.View函数(2)
    Django基础—— 7.View函数(1)
    Django基础—— 6、URL分发器
  • 原文地址:https://www.cnblogs.com/itpepe/p/4881953.html
Copyright © 2011-2022 走看看