f08_d_观摩_webview的phonegap小框架设计_ok_W_第1页
f08_d_观摩_webview的phonegap小框架设计_ok_W_第2页
f08_d_观摩_webview的phonegap小框架设计_ok_W_第3页
f08_d_观摩_webview的phonegap小框架设计_ok_W_第4页
f08_d_观摩_webview的phonegap小框架设计_ok_W_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基於軟硬整合觀點F08_d观摩:WebView的PhoneGap小框架设计( d)By 高煥堂基於軟硬整合觀點4、使用Proxy-Stub模式来包装IPlugin接口基于上述的PhoneGap框架,可以写JavaScript来呼叫Java插件。在许多范例里, 你会看到如下的一段程序代码:var myProxy=function();myPtotype.play = function(success, fail, para1, para2) return PhoneGap.exec( success, fail,/java类别名称,注册于plugins.xml中/在Plugin里

2、用来配对的action名称myPlugin, PLAY,para1, para2/所传递的参数(parameter),Array结构);myPtotype.stop = function(success, fail, para1, para2) return PhoneGap.exec( success, fail,/java类别名称,注册于plugins.xml中/在Plugin里用来配对的action名称/所传递的参数(parameter),Array结构myPlugin, STOP,para1, para2);PhoneGap.addConstructor(functio

3、n() PhoneGap.addPlugin(myProxy, new myProxy();); 有些人就会问到:为什么要写这段程序代码呢? 我们可看看: /zyip/archive/2 012/05/12/2497029.html 在这篇文章里,作者写到:“You will need to create a class with functions that will mirror the logic exposed bythe native code.”(你必须创建一个类别,来扮演Java本地代码的逻辑的映像) 这样的说明,可能让许多人仍然模糊不清

4、。于此,让我来说明一下。 在PhoneGap框架里,由HTML5_JS模块呼叫Java插件的基本架构如下: 由于IPlugin接口只提供单一函数: execute();使得PhoneGap也只能提供单一函数:exec()。 然而,在HTML5_JS里可能有多个函数,例如play()和stop()等。 于是,在HTML5_JS里,必须从play()函数转而呼叫PhoneGap.exec()。 这个PhoneGap.exec()再透过WebView而呼叫到IPlugin.execute()。 如果我们在上述架构里面,加上一个myProxy类别,它包装了PhoneGap.exec() 函数,扮演Ja

5、va Plugin的Proxy角色,如下图所示: 此时,HTML5_JS里面就看不到PhoneGap.exec()函数了,其好处是: 一方面让HTML5_JS程序代码比较单纯; 另一方面,让HTML5_JS与PhoneGap.exec()两者相依性(Dependency)降低,让HTML5_JS不受制于PhoneGap的框架界面。也因而提升了PhoneGap框架接口的变动自由度。 通常,在框架设计里,myProxy和myStub 会是成对的,这称为Proxy-Stub模式。 其中的指令:PhoneGap.addPlugin(myProxy, new myProxy(); 这诞生了一个myPro

6、xy类别的对象,然后将其指针存入于window.plugins.myProxy 里。于是,在HTML5_JS里面就能呼叫myProxy.play()或myProxy.stop(),如下述的程序代码: var hello = function()var success = function(data)alert(data : + data.para1);var fail = function(e)alert(e);window.plugins.myProxy.play(success, fail, Hello, Mike); 于此,你已经学会了使用proxy-stub模式来封装PhoneGap.

7、exec()界面。除了PhoneGap框架之外,在Android框架里, 也使用同样的技巧来封装跨进程的IBinder 接口。 这项技巧是各种框架开发时,经常使用到的。基於軟硬整合觀點5、一般App如何使用PhoneGap框架呢?PhoneGap框架原本的信息流向承接来自WebView的 原本PhoneGap是用来支持Web App开发 Web App是以HTML5/JS语言开发的 WebView是UI的来源public class DroidGap extends PhonegapActivity / .protected WebView appView;protected LinearLa

8、yout root;/ public void onCreate(Bundle savedInstanceState) / root = new LinearLayoutSoftKeyboardDetect(this, width, height);/ public void init() this.appView = new WebView(DroidGap.this);/ . root.addView(this.appView);setContentView(root); 我们可以依循GPL开源协议而修改PhoneGap的源代码,用来支持一般Android App的开发。 在一般App里,会用到许多View控件(如Button等),而不局限于WebView,而这些View控件都是UI的来源。如果处理需要使用到Java插件,就能将信息传递给PhoneGap了。 使用一般Android App的撰写方式,在myActivit

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论