当前位置: 首页 > 工具软件 > Crosswalk > 使用案例 >

android 的导入crosswalk 用xwalkview 替换webview

司马洲
2023-12-01

用过webvIew开发的各位伙伴应该知道,同样的html代码在ios手机上运行无压力,但是在android手机上运行,慢的要死。还会有各种奇怪的蛋碎问题。后来查阅了很多文章,决定使用crosswalk替换webview。 具体crosswalk是什么大家百度吧,简单讲就是一个浏览器内核。比webview速度快,兼容性也好。

下面就是介绍下导入的方式。导入方式建议参考官方文档https://crosswalk-project.org/documentation/android.html  这里不再多说,这篇文章主要讲遇到的问题和解决方法。

这是中文版的导入方式https://software.intel.com/zh-cn/articles/v 

需要说明的是,导入后会报错,开始我也不知道是什么原因,最后发现是android target版本太低,就是android sdk我用的是19后来把target换成22就没有问题了。就是android 5.1

另外一点,用webview的时候会用到setWebViewClient 方法 xwalkview 对应的方法 官方说是setResourceClient  但是我试了以下 个人感觉用setUIClient比较好。因为用webview的时候。我经常会用到 mWebView.setWebViewClient(new WebViewClient(){
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                customProgressDialog = CustomProgressDialog.createDialog(LogActivity.this);
                customProgressDialog.show();
            }
            public void onPageFinished(WebView view, String url) {
                customProgressDialog.dismiss();
            }
        });


在onLoadFinished和onLoadStarted中写一些方法和效果,但是用xwalkview是 同样想实现某些效果只能用

mXWalkView.setUIClient(new XWalkUIClient(mXWalkView){
            public void onPageLoadStarted(XWalkView view,String url){
                Log.i("mXWalkView onPageLoadStarted",url);


                //加载中 请稍后
                customProgressDialog = CustomProgressDialog.createDialog(LogActivity.this);
                customProgressDialog.show();
            }
            public void  onPageLoadStopped(XWalkView view,String url,XWalkUIClient.LoadStatus status){
                Log.i("mXWalkView onPageLoadStopped",url);
                customProgressDialog.dismiss();
                if(url.equals("file:///android_asset/html/docs/login.html#")){
                    canGoBack = false;
                    Log.i("mXWalkView onPageLoadStarted","canGoBack"+canGoBack);
                   // mXWalkView.load("file:///android_asset/html/docs/login.html",null);
                    mXWalkView.getNavigationHistory().clear();
                }
            }
        });


所以个人比较推荐用setUIClient方法  另外,用一个问题 至今没有解决

就是在使用xwalkview时, 无法禁用android的back键 还请各位大神知道的留言告诉我。

最后我用的是mXWalkView.getNavigationHistory().clear(); 方法,清空历史记录,这样再点击back键 就没有效果了。页面就不会跳转。

个人觉得国内用crosswalk的还是有一些的 但是文章很少,因为时间问题,不能写特别详细的步骤,希望大家体谅和支持。

 类似资料: