android 的導入crosswalk 用xwalkview 替換webview

用過webvIew開發的各位夥伴應該知道,一樣的html代碼在iOS手機上運行無壓力,可是在Android手機上運行,慢的要死。還會有各類奇怪的蛋碎問題。後來查閱了不少文章,決定使用crosswalk替換webview。 具體crosswalk是什麼你們百度吧,簡單講就是一個瀏覽器內核。比webview速度快,兼容性也好。html

下面就是介紹下導入的方式。導入方式建議參考官方文檔https://crosswalk-project.org/documentation/android.html  這裏再也不多說,這篇文章主要講遇到的問題和解決方法。android

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

須要說明的是,導入後會報錯,開始我也不知道是什麼緣由,最後發現是android target版本過低,就是android sdk我用的是19後來把target換成22就沒有問題了。就是android 5.1web

另一點,用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();
                }
            }
        });this

 

因此我的比較推薦用setUIClient方法  另外,用一個問題 至今沒有解決url

就是在使用xwalkview時, 沒法禁用android的back鍵的解決辦法:spa

 

        返回鍵的up事件被xwalkview處理並被return true了;這樣個人act就收不到也沒法再處理此事件了。個人作法是寫一個類派生自xwalkview,重寫dispatchKeyEvent函數,判斷是back鍵就直接return false;這樣返回鍵的UP事件就會繼續傳遞到activity,在個人act中再作邏輯處理。.net

相關文章
相關標籤/搜索