Android Hybrid開發

參考:談談Android App混合開發

Html 5和Native的交互

WebView 原本就支持js和Java相互調用,你只須要開啓 WebView 的JavaScript腳本執行,java

而後經過代碼 mWebView.addJavascriptInterface(new JsBridge(), "bxbxbai"); git

向Html 5頁面時注入一個Java對象,而後就能夠在Html 5頁面中調用Native的功能了github

微信怎麼作的

微信應該是Hybrid 開發作的最好的App之一,它是怎麼作交互的呢?web

答案就是 微信JS-SDK ,去微信開發者文檔中能夠看到,微信JS-SDK封裝了各類微信的功能,微信

好比分享到朋友圈,圖像接口,音頻接口,支付接口地理位置接口等等。網絡

開發者只須要調用微信JS-SDK中的函數,而後統一由JS-SDK來調用微信中的功能,微信開發

這樣好處就是我寫了一個Html 5的應用或網頁,在Android和iOS的微信中均可以正常運行了框架

總結

通常來說,也是我目前知道的兩種主流的方式就是函數

  1. js調用Native中的代碼
  2. Schema:WebView攔截頁面跳轉

第2種方式實現起來很簡單,可是一個致命的問題就是這種交互方式是單向的,Html 5沒法實現回調。ui

像雲音樂App中這種點擊跳轉到具體頁面的功能,Schema的方式確實能夠簡單實現,並且也很是適合。

若是需求變得複雜,假如Html 5須要獲取Native App中的用戶信息,那麼最好使用js調用的方式。

一種開源的解決方案

Cordova是Apache的一個開源解決方案,不過它須要xml配置 CordovaPlugin 信息,使用會比較麻煩,並且這個框架很重,具體請自行搜索Cordova使用教程

下面這個開源項目是我我的以爲比較合理的解決方案,也比較輕量級,下圖就是一個Demo

https://github.com/pedant/safe-java-js-webview-bridge

Hybrid開發適用於哪些功能

本文講的Hybrid開發就是Native客戶端中嵌入了Html App的功能,這方面微信應該是作的最好的,

因爲Html 5的效率以及耗電問題,我我的以爲用戶是不能知足Web App的體驗的,Hybrid App也只適用於某些場景。

一些基礎的功能,好比調用手機的攝像頭,獲取地理位置,登陸註冊功能等等,作成Native的功能,比讓Html 5來調用更好,這樣的體驗也更好。

若是你把一個登陸和註冊功能也作成Html 5,在弱網絡環境下,這個體驗應該會很是的差,或許你等半天還沒加載出頁面。

你可能會說,我能夠預先加載Html 5的代碼,打開App時直接加載,那麼我說你在給本身找麻煩,若是要這樣的話,Native開發或許更快一點。

那麼什麼狀況適合Html 5開發呢?像一些活動頁面,好比秒殺、團購等適合作Html 5,由於這些頁面可能涉及的很是炫並且複雜,Html 5開發或許會簡單點,關鍵是這些頁面時效性短更新更快,由於一個活動說不定就一週時間,下週換活動,若是這樣的話,你還作Native是確定不行的

相關文章
相關標籤/搜索