。。。。。。

一、Cordova 核心java类说明
CordovaActivity:Cordova Activity入口,已实现PluginManager、WebView的相关初始化工作, 只需继承CordovaActivity实现自己的业务需求。
PluginManager: 插件管理器
ExposedJsApi&:javascript调用Native, 通过插件管理器PluginManager 根据service找到具体实现类。
NativeToJsMessageQueue:Native调用javascript,主要包括三种方式:loadUrl 、 轮询、反射WebViewCore执行js
二、&Cordova框架类图
三、Cordova框架启动
当实现了DroidGap或者CordovaInterface接口的Activity的onCreate方法中调用DroidGap的loadUrl方法即启动了Cordova框架。
Cordova提供了一个Class(DroidGap&extends&CordovaActivity)和一个interface(CordovaInterface)来让Android开发者开发Cordova。
一般情况下实现DroidGap即可,因为DroidGap类已经做了很多准备工作,可以说DroidGap类是Cordova框架的一个重要部分;如果在必要的情况下实现CordovaInterface接口,那么这个类中很多DroidGap的功能需要自己去实现。继承了DroidGap或者CordovaInterface的Activity就是一个独立的Cordova模块,独立的Cordova模块指的是每个实现了DroidGap或者CordovaInterface接口的Activity都对应一套独立的WebView,Plugin,PluginManager,没有共享的。
在初始化完CordovaWebView后调用CordovaWebView.loadUrl()。此时完成Cordova的启动。
1.Cordova关联对象初始化
在实例化CordovaWebView的时候, CordovaWebView对象会去创建一个属于当前CordovaWebView对象的插件管理器PluginManager对象,一个消息队列NativeToJsMessageQueue对象,一个JavascriptInterface对象ExposedJsApi,并将ExposedJsApi对象添加到CordovaWebView中,JavascriptInterface名字为:_cordovaNative。
2. Cordova的JavascriptInterface在创建ExposedJsApi时需要CordovaWebView的PluginManager对象和NativeToJsMessageQueue对象。因为所有的JS端与Android native代码交互都是通过ExposedJsApi对象的exec方法。在exec方法中执行PluginManager的exec方法,PluginManager去查找具体的Plugin并实例化然后再执行Plugin的execute方法,并根据同步标识判断是同步返回给JS消息还是异步。由NativeToJsMessageQueue统一管理返回给JS的消息。
3. 何时加载Plugin,如何加载&Cordova在启动每个Activity的时候都会将配置文件中的所有plugin加载到PluginManager。那么是什么时候将这些plugin加载到PluginManager的呢?在b中说了最后会调用CordovaWebView.loadUrl(),对,就在这个时候会去初始化PluginManager并加载plugin。PluginManager在加载plugin的时候并不是马上实例化plugin对象,而是只是将plugin的Class名字保存到一个hashmap中,用service名字作为key值。当JS端通过JavascriptInterface接口的ExposedJsApi对象请求Android时,PluginManager会从hashmap中查找到plugin,如果该plugin还未实例化,利用java反射机制实例化该plugin,并执行plugin的execute方法。
4.Cordova的数据返回
Cordova中通过exec()函数请求android插件,数据的返回可同步也可以异步于exec()函数的请求。在开发android插件的时候可以重写public boolean isSynch(String action)方法来决定是同步还是异步。Cordova在android端使用了一个队列(NativeToJsMessageQueue)来专门管理返回给JS的数据。
& &1)同步& &Cordova在执行完exec()后,android会马上返回数据,但不一定就是该次请求的数据,可能是前面某次请求的数据;因为当exec()请求的插件是允许同步返回数据的情况下,Cordova也是从NativeToJsMessageQueue队列头pop头数据并返回。然后再根据callbackID反向查找某个JS请求,并将数据返回给该请求的success函数。& &2)异步& &Cordova在执行完exec()后并不会同步得到一个返回数据。Cordova在执行exec()的同时启动了一个XMLHttpRequest对象方式或者prompt()函数方式的循环函数来不停的去获取NativeToJsMessageQueue队列中的数据,并根据callbackID反向查找到相对应的JS请求,并将该数据交给success函数。& &注:Cordova对本地的HTML文件(file:// 开头的URL)或者手机设置有代理的情况下使用XMLHttpRequest方式获取返回数据,其他则使用prompt()函数方式获取返回数据。
5、webView.sendJavascript 发送到js队列,onNativeToJsMessageAvailable 负责执行js.
Native 调用 JS 执行方式有三种实现 LoadUrlBridgeMode、 OnlineEventsBridgeMode、PrivateApiBridgeMode
1、webView.sendJavascript 发送js方法到JS队列
2、onJsPrompt 方法拦截,获取调用方式
》》如果是gap_bridge_mode,则执行 appView.exposedJsApi.setNativeToJsBridgeMode(Integer.parseInt(message));》》如果是gap_poll, 则执行 appView.exposedJsApi.retrieveJsMessages("1".equals(message));
3、调用setBridgeMode 方法调用onNativeToJsMessageAvailable 执行javascript调用
四、Native调用javascript 方式:NativeToJsMessageQueue
1、loadUrl javascript 调用方式
private class LoadUrlBridgeMode extends BridgeMode
if (url.startsWith("file://") || url.startsWith("javascript:") || Config.isUrlWhiteListed(url)) {
2、Navitive事件通知javascript轮询获取Navitive数据
private class OnlineEventsBridgeMode extends BridgeMode
3、通过Java反射获取webview 的sendMessage 方法执行js, 支持 Android 3.2.4之上(包含)
---可以解决loadUrl 隐藏键盘的问题:当你的焦点在输入,如果这通过loadUrl调用js,会导致键盘隐藏
private class PrivateApiBridgeMode extends BridgeMode
Field f = webViewClass.getDeclaredField("mProvider");
f.setAccessible(true);
webViewObject = f.get(webView);
webViewClass = webViewObject.getClass();
Field f = webViewClass.getDeclaredField("mWebViewCore");
f.setAccessible(true);
webViewCore = f.get(webViewObject);
if (webViewCore != null) {
sendMessageMethod =
webViewCore.getClass().getDeclaredMethod("sendMessage", Message.class);
sendMessageMethod.setAccessible(true);
Message execJsMessage = Message.obtain(null, EXECUTE_JS, url);
sendMessageMethod.invoke(webViewCore, execJsMessage);
4、Native注册javascript接口 _cordovaNative
boolean isHoneycomb = (SDK_INT &= Build.VERSION_CODES.HONEYCOMB && SDK_INT &= Build.VERSION_CODES.HONEYCOMB_MR2);
// Bug being that Java Strings do not get converted to JS strings automatically.This isn't hard to work-around on the JS side, but it's easier to just use the prompt bridge instead.
if (isHoneycomb || (SDK_INT & Build.VERSION_CODES.GINGERBREAD)) {
Log.i(TAG, "Disabled addJavascriptInterface() bridge since Android version is old.");
} else if (SDK_INT & Build.VERSION_CODES.HONEYCOMB && Build.MANUFACTURER.equals("unknown")) {
// addJavascriptInterface crashes on the 2.3 emulator.
Log.i(TAG, "Disabled addJavascriptInterface() bridge callback due to a bug on the 2.3 emulator");
this.addJavascriptInterface(exposedJsApi, "_cordovaNative");
阅读(...) 评论()首页 | 麦客CRM
?麦客CRM是一款在线表单制作工具,同时也是强大的客户信息处理和关系管理系统。她可以帮助你轻松完成信息收集与整理,实现客户挖掘与消息推送,并开展持续营销。在线制作表单,收集任何你想要的信息文本、图像、附件、地理位置...多达57种组件可供选择支持设置表单逻辑;在线支付也不在话下表单外观自由定义;大量精美模板一键换肤当有新反馈到达,麦客提供邮件、短信和微信提醒,实时跟踪收集过程灵活的反馈数据筛选;统计图表一目了然与填写者有关的信息自动沉淀至联系人模块,为联系人价值分析提供依据邮件和短信,对客户持续营销高效的触发和批量邮件发送服务,轻松发送你的专属邮件可视化拖拽式邮件设计工具,制作一封邮件远比你想的简单提供三网合一短信通道,支持发送通知、提醒以及营销短信可以在发送内容中添加联系人变量,让你的邮件/短信更加具有针对性发送状态报告实时返回,随时了解推广效果,调整业务策略联系人:找出高价值客户多渠道添加联系人:表单填写者转化、文件导入、邮箱导入等自动记录联系人行为:填写表单,浏览/点击邮件,收发短信等30多项细分属性,100余种筛选条件,快速从海量客户中精准定位4种不同类型的群组和标签,精细化地管理联系人通过联系人行为和响应挖掘联系人价值,让你的每一分投入达到最高性价比洞悉你的客户从哪里来从市场营销活动中发现客户,定位其中的高值客户,让你的每一次市场活动、每一次与客户的接触都有意义。更重要的是,这一切都是免费的:免费邀请任意数量的成员与你一同协作,管理数据免费创建任意数量的表单,收集任意数量的反馈免费管理任意数量的联系人储存在麦客的数据,麦客承担完整的保密责任,绝不会将你的数据以任何形式与任何第三方共享友善且专业的客户服务,随时通过邮件、电话、留言等渠道联系麦客,我们期待任何来自你的消息 ?产品公司支持意见反馈:市场合作:关注麦客:战斗连招:
敌人打法:
流程攻略:
精华文章推荐
Windows Vista / XP/ 7 / 8
AMD AthlonX2 2.8 Ghz或更好
ATI Radeon HD 3850 或更好
Windows Vista / XP/ 7 / 8
AMD Phenom II X4 3 Ghz或更好
ATI Radeon HD 6950或更好
loading...
Devil May Cry
游戏类型:
游戏制作:
Ninja Theory
游戏发行:
游戏平台:
PC/Xbox360/Xbox One/PS3/PS4
上市时间:
官方网址:
玩家评分(0参与)
游戏介绍:
  《鬼泣5》是继《鬼泣4》之后的Capcom又一新作,其故事内容是围绕系列主角但丁年轻时的故事。并且这一代Capcom已经交由曾经制作《天剑》的工作室Ninja Theory制造。《鬼泣5》的故事发生在一个叫做Limbo的恶魔国度,Limbo属于地狱边境,是由邪恶组成的可以反射现实的平行世界。在这个环境里所有的物质都在不断的崩溃,试图在毁灭之间消灭但丁。强大的恶魔们可以随意将但丁拉入Limbo,然后使其陷入激烈的战斗之中。
  本作将把更多的精力放在空中战斗上,这和以前的《鬼泣》是不同的。玩家可以通过使用连锁攻击更长的停留在空中,给敌人造成更大伤害。这样看来,空中战斗将是本作的重要组成部分。而本作中还加入了场景战结束时和恶魔闪避时画面会出现慢动作的效果,使战斗更具可观赏性。在本作中但丁拥有天使恶魔双血统,根据不同情况使用不同的能力以过关,游戏也加入了一定的解谜元素,包括失落之魂和隐藏任务钥匙的收集等。
游戏攻略心得
详细图文流程攻略
视频流程攻略
维吉尔的陨落DLC图文流程攻略
维吉尔的陨落DLC视频流程攻略
《DmC:鬼泣最终版》修正了许多此前的错误,是体验这部作品的最佳方式。
《鬼泣5》已经于25日同各位玩家见面了,下面就看下阿甘为大家带来的画面点评!
《鬼泣5》最大的改变是但丁形象以及画面,本文通过跟前代对比更能反映5代的优劣。
《鬼泣5》PC版大家都玩上了吧?这次卡普空出的够快的,该看看这移植表现如何了。
玩家对本作褒贬不一,但PC版刚出就获得大量下载,玩家们都想体验但丁的成长史。
最新热门游戏
上市时间:<span class="plts" title="(PC)(XboxOne)(PS4)">
游戏类型:
动作角色扮演
游戏属性:
上市时间:<span class="plts" title="(PC)(XboxOne)(PS4)">
游戏类型:
游戏属性:
上市时间:<span class="plts" title="(PC)(XboxOne)(PS4)">
游戏类型:
游戏属性:
上市时间:<span class="plts" title="(PC)(Xbox360)(PS3)">
游戏类型:
游戏属性:
上市时间:<span class="plts" title="(PC)(XboxOne)(PS4)">
游戏类型:
动作角色扮演
游戏属性:
上市时间:<span class="plts" title="(PC)(PS4)">
游戏类型:
动作角色扮演
游戏属性:
上市时间:<span class="plts" title="(PK)(PC)(XboxOne)(PS3)(PS4)">
游戏类型:
游戏属性:}

我要回帖

更多关于 最新电视剧播放网站 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信