<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] ## Android與H5交互 ### Android調用JS代碼的方法主要有2種: 1. WebView的loadUrl 2. WebView的evaluateJavascript ### JS調用Android代碼的方法主要有3種:** 1. WebView的addJavascriptInterface進行對象映射(低版本Android4以下好像有一些安全問題,本人沒有驗證) 2. WebViewClient 的 shouldOverrideUrlLoading 方法回調攔截 url 3. WebChromeClient 的onJsAlert、onJsConfirm、onJsPrompt方法回調攔截JS對話框alert()、confirm()、prompt() 消息 ## WebView提速 H5頁面的渲染速度其實主要取決于兩個 1. js解析效率 如果js文件較多、解析比較復雜, 就會導致渲染速度較慢。或者手機的硬件性能比較差的話, 也會導致渲染速度比較慢。 2. 頁面資源的下載 一般加載一個H5頁面, 都會產生較多的網絡請求, 如圖片、js文件、css文件等, 需要將這些資源都下載完成之后才能完成渲染, 這樣也會導致頁面渲染速度變慢 ### 本地資源 一些資源文件放在本地的assets目錄, 然后重寫WebViewClient的shouldInterceptRequest(WebView view, String url)和shouldInterceptRequest(WebView view, WebResourceRequest request)這兩個方法, 對訪問地址進行攔截, 當url地址命中本地配置的url時, 使用本地資源替代, 否則就使用網絡上的資源。 ### 離線包 既然很多問題都是文件分散管理困難引起,而我們這里的使用場景是使用 H5 開發功能模塊,那很容易想到把一個個功能模塊的所有相關頁面和資源打包下發,這個壓縮包可以稱為功能模塊的離線包。使用離線包的方案,可以相對較簡單地解決上述幾個問題: 1. 可以預先下載整個離線包,只需要按業務模塊配置,不需要按文件配置,離線包包含業務模塊相關的所有頁面,可以一次性預加載。 2. 離線包核心文件和頁面動態的圖片資源文件緩存分離,可以更方便地管理緩存,離線包也可以整體提前加載進內存,減少磁盤 IO 耗時。 3. 離線包可以很方便地根據版本做增量更新。 4. 離線包以壓縮包的方式下發,同時會經過加密和校驗,運營商和第三方無法對其劫持篡改。 到這里,對于使用 H5 開發功能模塊,離線包是一個挺不錯的方案了,簡單復述一下離線包的方案: 1. 后端使用構建工具把同一個業務模塊相關的頁面和資源打包成一個文件,同時對文件加密/簽名。 2. 客戶端根據配置表,在自定義時機去把離線包拉下來,做解壓/解密/校驗等工作。 3. 根據配置表,打開某個業務時轉接到打開離線包的入口頁面。 4. 攔截網絡請求,對于離線包已經有的文件,直接讀取離線包數據返回,否則走 HTTP 協議緩存邏輯。 5. 離線包更新時,根據版本號后臺下發兩個版本間的 diff 數據,客戶端合并,增量更新。 ### WebView的初始化 本地Webview初始化都要不少時間, 首次初始化webview與第二次初始化不同,首次會比第二次慢很多。原因預計是webview首次初始化后,即使 webview 已經釋放,但一些webview 共用的全局服務或資源對象仍沒有釋放,第二次初始化時不需要再生成這些對象從而變快。我們可以在Application預先初始化好WebView, 當第二次初始化WebView的時候速度就快多了, 或者直接將其拿來使用。 ## 參考資料 [Android Webview H5 秒開方案實現](https://juejin.cn/post/6844903673697402887) [https://juejin.cn/post/6844903586082766862]
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看