1. 程式人生 > >hybrid幾種模式

hybrid幾種模式

訪問 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幾種模式