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回调线程并不是主线程。

  • 相关阅读:
    PHP开发者常犯的MySQL错误
    linux 用户管理
    php中mysql数据库异步查询实现
    PHP 安全相关 简单知识
    js倒计时 网上流传最多的
    TP学习笔记
    Java Map
    Java集合技巧
    Java集合之HashSet/TreeSet原理
    Java Set
  • 原文地址:https://www.cnblogs.com/itpepe/p/4881953.html
Copyright © 2011-2022 走看看