android下phonegap的原理

主要是js和native如何通信的问题

举个栗子,要实现手机的震动,那么从js层如何到native层的流程大致是这个样子

1、在业务逻辑代码里调用notification.vibrate();

2、notification.js里定义的函数 vibrate()  执行了 cordova.exec(onSuccess,onFail,’Notification’,’vibrate’,arguments);

3、cordova.js里  exec执行了 prompt(argsJson, ‘gap:’+JSON.stringify([service, action, callbackId]));

这个时候webview会企图弹出一个窗口,android提供的WebChromeClient可以截获这个动作

4、然后就到了JAVA层,cordova重写了WebChromeClient里的onJsPrompt方法

在onJsPrompt里根据插件名字,函数名,参数等,将命名分发给对应的plugin

在plugin里执行震动对应的代码
5、JAVA处理完之后,需要给js一个反馈,是否执行成功

用loadUrl(‘javascript:xxx()’);