今天只记录小的简单的东西,由于要睡觉了。java
若是你想作一个Hybrid应用,也许有多种方式,也许使用PhoneGap,也许只使用WebView,也许在Native的某个页面嵌入一部分的WebView。服务器
具体使用请以自身需求为准。那么今天说说最最轻量的一个方案:咱们有这么个需求,有的页面须要使用 Native,有的页面须要使用WebView,同时,Native改变可能比较小,WebView的内容改动是不少的,由于WebView中呈现的内容在服务器端,所以它的好处就是不须要升级软件而直接为用户提供新功能。函数
那么基于这么一种业务需求,咱们想到的其中一个办法就是使用自定义的Schema,使用一个统一的Schema管理器管理,对于不一样的Schema咱们利用Intent的一些特性,跳到咱们所须要的Activity里,呈现咱们所须要的内容便可。.net
那么咱们这里用到了一个很小的组件类就是java.net.URI 这个组件,想必看见这个类必然会想到java.net.URL类吧。URI全称是Uniform Resource Identifier(通用资源标识符),URL这个类是Uniform Resource Locator(统一资源定位符)(摘自百度百科)。不少人可能混淆两个概念,其实只要只要URL是URI的子集便可,也就是说,相对来说,URI的定义会更普遍抽象一些。code
引用一个咱们自定义Schema的一个URI例子orm
lwy://cn.com.zjseek.lwy/news?id=2&path=3对象
这里Schema,Location,Path,Query等都俱全了,那么有什么用呢?
Location能够指定一个包名,咱们用java.net.URI对象的构造函数生成后,用getHost方法能获取到它的“主机”资源
URI uri = new URI("lwy://cn.com.zjseek.lwy/news?id=2&path=3"); System.out.println(uri.getScheme()); // lwy System.out.println(uri.getHost()); // cn.com.zjseek.lwy System.out.println(uri.getPath()); // /news System.out.println(uri.getQuery()); // id=2&path=3
运行这段代码能获得每一部分的结果。
那么组装Intent的时候,能够指定包名(Host),而后指定Action名(path),而后增长传递的数据和Fragment(Query)。
这样就很好的把一个跳转到某个应用某个页面的的行为用URI指定出来。方便应用和应用之间相互跳转。开发
Intent intent = new Intent(); intent.setPackage(uri.getHost()); intent.setAction(uri.getPath()); ...
这样的URI也很是适合在WebView中用<a>
标签进行跳转,最终方便了咱们进行HybridApp的开发。get