hybrid幾種模式
阿新 • • 發佈:2017-09-03
訪問 andro 原生應用 需要 ble 依賴 綁定 內核 client
native和web適合的場景
Native:
用戶體驗要求高
業務變動很小(如首頁)
性能要求高
Web:
業務變化頻繁(如廣告)
性能要求低
展示性內容
hybrid App其實會有不同的分支
方案一:使用PhoneGap、AppCan之類的中間件,
以WebView作為用戶界面層,
以Javascript作為基本邏輯,以及和中間件通訊,
再由中間件訪問底層API的方式,進行應用開發。
這種架構一般會非常依賴WebView層的性能。
方案二:使用Adobe Air、RubyMotion、Appcelerator或者是Xamarin這種非官方語言的工具,打包成原生應用的方式開發。
它們並沒有很單純地使用原生提供的語言進行開發,而是通過對開發者提供友好的開發工具,並折中地把這種開發語言轉換成原生語言,最終打包出整個應用。
方案三:在開發原生應用的基礎上,嵌入WebView。
但是整體的架構使用原生應用提供,Native開發人員會寫好基本的架構以及API讓Web開發人員開發界面以及大部分的渲染。
在Android手機中
內置了一款高性能webkit內核瀏覽器,在SDK中封裝為一個叫做WebView組件。
1.AndroidManifest.xml中必須使用許可"android.permission.INTERNET",否則會出Web page not available錯誤。
2.如果訪問的頁面中有Javascript,則webview必須設置支持Javascript。
webview.getSettings().setJavaScriptEnabled(true);
3.如果頁面中鏈接,如果希望點擊鏈接繼續在當前browser中響應,而不是新開Android的系統browser中響應該鏈接,必須覆蓋 webview的WebViewClient對象。
4.如果不做任何處理,瀏覽網頁,點擊系統“Back”鍵,整個Browser會調用finish()而結束自身,
如果希望瀏覽的網頁回退而不是退出瀏覽器,需要在當前Activity中處理並消費掉該Back事件。
5.addJavascriptInterface(Object obj,String interfaceName)這個方法,
在webview加載的頁面中就可以直接通過 javascript:window. interfaceName訪問到綁定的java對象了。
1)為了讓WebView從apk文件中加載assets,Android SDK提供了一個schema,前綴為"file:///android_asset/"。WebView遇到這樣的schema,就去當前包中的 assets目錄中找內容。
2)addJavascriptInterface方法中要綁定的Java對象及方法要運行另外的線程中,不能運行在構造他的線程中,這也是使用 Handler的目的。
mWebView.addJavascriptInterface(new Object() {
public void clickOnAndroid() {
mHandler.post(new Runnable() {
public void run() {
mWebView.loadUrl("javascript:wave() ");
}
});
}
}, "demo");
<html>
<mce:script language="javascript"><!--
function wave() {
document.getElementById("droid").src="android_waving.png";
}
// --></mce:script>
<body>
<a onClick="window.demo.clickOnAndroid()">
<img id="droid" src="android_normal.png" mce_src="android_normal.png"/><br>
Click me!
</a>
</body>
</html>
TCP協議
TCP 使用固定的連接
當應用程序通過 TCP 與另一個應用程序通信時,它會發送一個通信請求。
這個請求必須被送到一個確切的地址。
在雙方“握手”之後,TCP 將在兩個應用程序之間建立一個全雙工 (full-duplex) 的通信,將占用兩個計算機之間的通信線路,直到它被一方或雙方關閉為止。
TCP/IP 意味著 TCP 和 IP 在一起協同工作。
TCP:
負責應用軟件和網絡軟件之間的通信。
負責將數據分割並裝入 IP 包,然後在它們到達的時候重新組合它們。
IP:
負責計算機之間的通信。
負責將包發送至接受者。
三次握手(Three-Way Handshake)即建立TCP連接,
就是指建立一個TCP連接時,需要客戶端和服務端總共發送3個包以確認連接的建立。
在socket編程中,這一過程由客戶端執行connect來觸發
TCP四次揮手即終止TCP連接,就是指斷開一個TCP連接,
需要客戶端和服務端總共發送4個包以確認連接的斷開。
在socket編程中,這一過程由客戶端或服務端任一方執行close來觸發
關閉連接時,當服務端收到對方的FIN報文時,僅僅表示對方不再發送數據了但是還能接收數據,
己方也未必全部數據都發送給對方了,所以己方可以立即close,
也可以發送一些數據給對方後,再發送FIN報文給對方來表示同意現在關閉連接,因此,己方ACK和FIN一般都會分開發送。
hybrid幾種模式