zoukankan      html  css  js  c++  java
  • hybrid几种模式

    native和web适合的场景

    Native:
        用户体验要求高
        业务变动很小(如首页)
        性能要求高
    
    Web:
        业务变化频繁(如广告)
        性能要求低
        展示性内容

    hybrid App其实会有不同的分支

    方案一:使用PhoneGap、AppCan之类的中间件,
    以WebView作为用户界面层,
    以Javascript作为基本逻辑,以及和中间件通讯,
    再由中间件访问底层API的方式,进行应用开发。
    这种架构一般会非常依赖WebView层的性能。
    
    方案二:使用Adobe Air、RubyMotion、Appcelerator或者是Xamarin这种非官方语言的工具,打包成原生应用的方式开发。
    它们并没有很单纯地使用原生提供的语言进行开发,而是通过对开发者提供友好的开发工具,并折中地把这种开发语言转换成原生语言,最终打包出整个应用。
    
    方案三:在开发原生应用的基础上,嵌入WebView。
    但是整体的架构使用原生应用提供,Native开发人员会写好基本的架构以及API让Web开发人员开发界面以及大部分的渲染。
    多View混合型:
      即Native View和Web View独立展示,交替出现
    
    单View混合型:
      即在同一个View内,同时包括Native View和Web View。
    在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一般都会分开发送。

  • 相关阅读:
    Delphi线程的终止
    Delphi线程简介---Create及其参数、Resume、Suspend
    谈谈Delphi中的类和对象4---类是一种对数据和操作高度的封装机制 && 类是一种代码重用机制
    LeetCode:链表排序
    LeetCode 二叉树的最小深度
    hadoop的集群安装
    java线程池分析和应用
    Java thread中对异常的处理策略
    Thread interrupt方法解析
    如何偷Android的内存-Tricking Android MemoryFile
  • 原文地址:https://www.cnblogs.com/avidya/p/7468233.html
Copyright © 2011-2022 走看看