在应用程序内使用 html+jquery 的 Android webview 有时会挂起

Posted

技术标签:

【中文标题】在应用程序内使用 html+jquery 的 Android webview 有时会挂起【英文标题】:Android webview using html+jquery inside app hangs sometimes 【发布时间】:2014-12-24 19:46:59 【问题描述】:

我使用 webview 制作了 html+jquery 移动应用程序,我的所有代码都在 assest 文件夹中,我注意到有时我的应用程序挂起,有时它工作正常,如果我遗漏了一些东西

下面是android java代码

我制作了 html +jquery 应用程序,应用程序大部分时间都挂起,有时它可以通过任何方式使其正常工作

以下问题:

1:画布中的某些时间对象被重复,但是在任何画布上获取重复对象都没有变化,此问题仅在android浏览器中发生

2: 有时在拖动对象时会卡在任何地方而不会仅在 android 浏览器中被拖放到画布中 下面是我的java代码

public class MainActivity extends Activity implements OnClickListener 

    private static final String URL = "file:///android_asset/index.html";
    private WebView mWebView;

    @SuppressLint("SetjavascriptEnabled")
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mWebView = (WebView) findViewById(R.id.webview); 
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.setWebChromeClient(new WebChromeClient());
        mWebView.setWebViewClient(new WebViewClient()

        );
        refreshWebView();
    

    private void refreshWebView() 
        mWebView.loadUrl(URL);
    

    @Override
    public void onClick(View v) 
        refreshWebView();
    


我在 assest 文件夹中使用的 html 代码如下链接

http://liveweave.com/JckSgC

【问题讨论】:

【参考方案1】:

我在 6 个月前遇到了这个错误。在对这个主题进行了大量研究之后,我个人得出结论,这是一个 android 的 API 错误,该错误已在 API 级别 18(KITKAT) 中得到修复。

这意味着,“如果应用程序在低于 Kitkat 的 android 版本上运行,webview 会开始挂起或疯狂运行

原因:

Android 版本低于 KITKAT 的 WebView 不支持 HTML5 和 CSS3。 http://www.mobilexweb.com/blog/android-4-4-kitkat-browser-chrome-webview

建议:

您可以使用外部网络视图,例如“ChromiumWebView” (ChromiumWebView链接https://github.com/pwnall/chromeview) 或者您可以限制您的应用程序仅在高于或等于 KITKAT 的 android 版本上运行。 (我个人不喜欢这个)

【讨论】:

以上是关于在应用程序内使用 html+jquery 的 Android webview 有时会挂起的主要内容,如果未能解决你的问题,请参考以下文章

表内输入的 JQuery 计算

jQuery 问题 - #<an Object> 没有方法

一个基于HTML5、jQuery的小部件库,用于构建现代网络应用程序。

如何在 .html 标记内附加 jQuery 变量值

JQuery如何实现点击查看更多,显示更多内容

jQuery怎样获取并且修改P标签内的值