android前端定制浏览器开发(干货)

原创 2015年11月21日 10:53:44

一开始采用的是系统自带的webview,运行起来好好的,但是在不同机器上测试的时候,发现在不同的系统上的体验不一样。于是考虑程序自己带一个浏览器的方式,这样能保证程序的体验是一致的,从网上搜索了一下,觉得intel的crosswalk评价还可以,于是就采用了这个方案。
参考网上的例子,直接在原工程中把webview给替换了,但是运行起来的时候,程序直接退出了,对比了网上的例子,没有发现什么不对的。无奈之下,重新建立了一下最下的demo,运行一下,还是报错。将重载的方法都屏蔽了,只加载一个XWalkView运行,程序正常,于是判断某一个重载函数的运行出问题了。将重载分别屏蔽,定位到onPause这个函数的重载出问题了,直接在onPause里面将XWalkView相关的代码直接屏蔽了,同时也去掉了onResume里面的XWalkView代码也屏蔽了,其他的都取消屏蔽,没有问题。一开始将所有初始还的代码都写到了onCreate里面,但是发现出了问题了,将XWalkView创建后的初始化工作放在了onXWalkReady里面,同时猜想在onPause里面之所以出问题,与XWalkView还没有准备好有关系,于是增加了一个boolean变量,在onXWalkReady结束的时候才置为true,在onPause中判断XWalkView是否已经准备好,如果准备好才调用XWalkView的相关代码,运行一下,发现没有问题。
继续向下调试,在XWalkView中增加js调用相关处理代码,后发现js调用java没有反应,仔细排查,发现是import的@JavascriptInterface不对,原来的代码引用的是webview的,但是intel自己定义了一个,需要引用它自己的。修改后,可以调用了。增加微信分享功能,发现图片如果太大的话,分享就会失败,于是考虑压缩图片,用BitmapFactory.decodeByteArray(buffer, 0, buffer.length, newOpts);这个方法先获取一下图片尺寸,然后修改尺寸等参数后后继续调用这个函数做压缩,分享搞定了。
分享成功后需要回调,但是回调函数不在主界面上,因此采用消息的机制,将消息通知给主界面,调用XWalkView.evaluateJavascript通知给js处理。但是每次分享取消的话,回到界面上整个界面就死掉了,从网上查找了半天,最终从一句话中得到了启示,在onResp处理微信反馈的消息后,调用了finish()将WXEntryActivity界面干掉。
crosswalk的体验非常好,在所有机器上的体验都一样,并且对于加载本地缓存和加载服务器的处理做得非常好,如果断网的情况下,也可以加载本地的缓存,这样,整个应用的体验不输原生的程序。用js在前端做压缩图片处理的时候,原来的webview需要等好长时间,但是crosswalk加入了硬件加速的功能,瞬间图片压缩就完成了。
整个浏览器的的定制过程处处是坑,以上只是将遇到的主要问题及应对方法列出来了,都是干货。其他的都可以在网上搜索到,就不赘述了。

php数组转换为json中文乱码解决方案

//解决json中文乱码 private function JSON($array) { $this->arrayRecursive($array, 'urlencode', ...

json_encode 与 json_decode的区别

JSON 的四个基本规则: 1) 并列的数据之间用逗号(”,”)分隔。 2) 映射用冒号(”:”)表示。 3) 并列数据的集合(数组)用方括号(“[]”)表示。 4) 映射的集合(对象)用大括...

IOS前端浏览器定制

公司开发的是一款H5的程序,需要加一个IOS浏览器外壳,我们需要增加的功能就是一个微信分享,其他的都是js实现的。 首先,需要定制一个浏览器,看了一下ios的开发,要求浏览器用webkit,这个东西是...

分享一些前端开发中最常用的JS代码片段~ 干货~

HTML5 DOM 选择器 // querySelector() 返回匹配到的第一个元素 var item = document.querySelector('.item'); console.lo...

分享一些前端开发中最常用的JS代码片段~ 干货~

HTML5 DOM 选择器// querySelector() 返回匹配到的第一个元素 var item = document.querySelector('.item'); console.log(...

VC++开发BHO插件—定制浏览器

在Windows操作系统上,我们最常见的浏览器有两种:文件浏览器(eXPloer.exe,应用于文件系统)和Internet浏览器(iexplore.exe,应用于互联网资源)。由于这两个浏览器功能强...

使用Nodejs+Yeoman定制前端开发项目构建工具

Nodejs介绍 现在说起Nodejs大家肯定不陌生了,没吃过猪肉也见过猪跑,它的推广也是带着争议的,有些人或多或少会鄙视它,免不了被各种程序语言社区对比。在我开始用它之前,我也不知道它到底有什么好...

VC++开发BHO插件——定制你的浏览器zt

关键字 BHO Browser COM ATL 网址过滤原作者姓名 陆其明文章原始出处 http://hqtech.nease.net 正文在Windows操作系统上,我们最常见的浏览器有两种:文件...

多浏览器兼容的前端开发指引

  • 2015年07月09日 11:28
  • 1.35MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android前端定制浏览器开发(干货)
举报原因:
原因补充:

(最多只允许输入30个字)