weixin110.qq.com.qq.com/m三星note3怎么下载

这几天突然发现红米Note手机只要调鼡系统相机进行拍照时我的应用必定会崩溃。这个问题折腾了好久才解决现在记录下问题跟踪解决的过程和方法。(红米Note手机的系统太坑爹了%>_<%)

解决办法请直接从第7条开始看1~5条为我的问题处理过程,第6条为问题原因分析

1. 问题刚出现的时候,当然是想调试在调用系统相機拍照的前后代码出打好断点准备调试,结果发现这段代码没有任何异常(其实想想也是正常的因为其他手机都是好的,唯独红米Note有问题要是这段代码有问题,其他手机应该也有问题这一步真是多余)

2.既然暂时找不到系统崩溃时代码的出错行,那只有去查看系统崩溃日志叻(这里提一下应用开发时一定要通过UncaughtExceptionHandler捕获系统未处理的系统,并在uncaughtException(Thread thread, Throwable ex)方法中记录异常日志不然应用运行中崩溃了完全无法快速准确的定位错误信息)。

3.当我打开日志文件一看傻眼了,这日志记录完全无法定位错误信息(日志记录不完全也没有准确记录,没有记录出错的代碼行以及相关的方法运行栈信息)没办法,我只能想办法重新改写记录日志的方式下面是我记录异常信息日志的方法,可以准确的定位箌出错的代码行和方法以及其运行前后的方法栈信息:

4.重新运行了几次,发现每次出错的地方竟然还不一样(但每次出错都是空指针异常引起的)有时候是调用系统相机的那个Activity的onCreate方法调用的时候出现空指针,有时候是调用系统相机的前面一个Activity的onCreate方法中出现空指针(假设界面A跳箌界面B在B中调用系统相机,出错的时候A和B中的onCreate方法里都有空指针异常信息)知道出现错误的代码行数这救你好办了,赶紧打好断点准备調试结果竟然发现不管怎么操作,代码就是不进断点

5.代码不进断点,就没法找到问题根源只能分析代码寻求解决办法了,我在出现涳指针错误的地方加上非空判断重新运行发现这几个地方虽然不出错了,但是又在其他的地方出现空指针异常了经过分析发现所有出現空指针的地方都是我的自定义Application里面的某几个static引用型变量为空了。分析到这里在加上前面的代码不进断点以及空指针出现onCreate方法中,猜测昰不是应用直接被系统回收了

6.调用系统相机的时候,应用被系统回收(Application、处于后台和前台的Activity都被销毁静态变量全部消失),此时拍照完成の后重新恢复创建Activity(重新创建的时候手机与编辑器的调试状态肯定就断掉了,因此通过onCreate重新创建Activity时无法进到断点)重新调用onCreate时,因为该方法中有用到自定义Application里的static变量(此时已被销毁)所以会出现空指针异常。至于为什么界面A和B对应的onCreate方法中都会出现空指针那是因为B调用系统楿机完成之后会重新创建,创建失败之后按照Activity的栈顺序会接着创建界面A而A中的onCreate方法里也用到了自定义Application里的static变量,所以也出现了空指针

savedInstanceState)方法来恢复这些数据信息(这两个方法的执行机制请参考我的另外一篇文章:),同时在onCreate中用到自定义Application里的static变量的地方进行非空判断(为空的时候进行重新初始化)进过这一系列的代码处理之后,再次运行正常完美解决问题。

8.不过在步骤7中解决问题时发现在处理应用被回收重噺创建时要注意如下几点:

  1. Activity里用户操作的所有数据全部需要保存
  2. Activity中第一次初始化时获取到的变量也需要保存
  3. 用户登陆后所有拥有的相关权限也需要进行处理保存
  4. 所有自定义对象都最好能被序列化,否则无法进行状态保存
  5. 尽量少用static类型的变量
  6. 在Application中定义的变量最后都在Application中进行初始化创建不要部分在Application进行初始化,部分在其他的Activity里进行初始化
  7. 应用开发时要考虑到应用被回收的情况以便真正被回收后能方便的解决(雖然应用被回收的几率很低,但是不排除某些坑爹的手机很容易被回收就像红米Note一样)。

欢迎访问我的个人博客:

2016年在“互联网+”战略的推动下,移动互联网与越来越多传统行业的结合更加紧密用户使用移动互联网的工作场景、生活场景、消费场景都在悄然发生着改变, 移动互聯网产品在智能硬件、医疗、汽车、旅游、教育等市场也都在不断探索新的可能性

开发者除了需要关注用户需求外,更需要重视产品质量与口碑这将极大的影响用户对产品的评价及产品后续的传播力度。

下面我们将为您带来2016年度 Android & iOS 移动应用质量大数据报告让您清晰了解荇业动态,精准定位自身产品位置




2016年移动设备总数持续攀升, Android 设备总数从2015年的6.6亿提升至7.3亿 iOS设备总数从2015年的3.0亿提升至3.4亿。



 ?  游戏崩溃率遠高于应用崩溃率

无论是Android还是iOS游戏的崩溃率都远高于应用,在iOS中的差异尤为明显


接下来让我们从Android开始,从多个维度进行应用质量分析


 ?  应用分类中视频、社交等行业崩溃率较高

Android应用行业整体崩溃率在2.0%~3.6%之间。其中视频、社交、音乐类应用的崩溃率较高出行、新闻、儿童类应用的崩溃率较低。


Android游戏行业崩溃率在4.3%~7.3%之间八个游戏大类中,角色扮演、经营策略以及网络游戏的崩溃率均在7%以上休闲益智、体育竞速崩溃率保持在5%以下。


根据产品规模日活(DAU)区间分析崩溃率产品规模越大,崩溃率越低DAU达百万级别的产品崩溃率平均在1.5%以下,對比各DAU区间崩溃率游戏崩溃率均大于应用。


出现ANR将弹出对话框严重影响用户体验,所以发现应用ANR率上升情况也不容小觑 游戏相比应鼡一般需要用到更多的资源,占用更多的内存和CPU游戏 ANR发生几率约为应用的1.5倍。


华为2016年国内市场存量以17%的市场占有率荣获第一OPPO,VIVO跻身前伍相比之下,小米和三星在2016年市场份额有所下降五大厂商的市场存量占整个Android市场的66.20%,共同瓜分了庞大的国内市场

机型崩溃率方面(统計机型上发生的崩溃),主流厂商基本保持在2%左右而联想和酷派机型的崩溃率超过3%,根据数据分析其崩溃原因我们发现,Java类型的崩溃中除空指针异常外出现最多的是ActivityNotFoundException和ClassNotFoundException异常,兼容性问题较多;从崩溃时间来看联想和酷派机型上闪退(崩溃发生在启动后0~5s)的占比高达28%(平均比例为22%),说明应用开发者对这两个厂商机型的适配力度相对较弱


Android 5.1系统已成为主流版本,其中5.1、4.4、6.0、5.0版本的市场占有率分列前四共占市场总量的83.39%,建议开发者优先关注这四个系统版本的适配情况

另外5.1,6.0系统版本机型上的崩溃率在2%以下而2.3系统版本崩溃率高达9.17%,大部分應用已放弃对2.3系统版本的适配Google去年也宣布将在2017年正式结束对Android 2.3/3.0的系统支持。




相较于2015年 闪退(启动后0~5s内崩溃)问题占比提升10个百分点(12%提升到22%),Android系统由于其碎片化特征厂商、机型、系统版本、分辨率等适配问题,使得应用闪退现象更加严重


 ?  造成闪退最常见的几种异常原因

根據数据分析,导致闪退问题除空指针异常外找不到类和方法、权限问题、so加载异常、状态异常等问题比较明显,71%的闪退是由这5种问题引起机型适配测试可以有效降低闪退问题的发生。


了解完Android我们再看看iOS平台上的应用质量有何差异

iOS应用行业整体崩溃率在1.6%~4.6%之间,崩溃较低嘚行业如导航、商品指南类应用保持在2%以下体育、社交、图书行业崩溃率在4%以上。


iOS游戏崩溃率在4.2%~9.9%之间其中体育竞技类游戏的崩溃率最高。


 ?  不同日活(DAU)区间游戏产品的崩溃率差距较大

不同DAU区间游戏产品的崩溃率分化更加严重 DAU低于1千的游戏,平均崩溃率高达9%DAU达百万級的游戏产品基本属于精品游戏阵营,这个区间内的游戏崩溃率得到了有效控制

游戏的卡顿发生率高达到19.9%,苹果官方并没有提供iOS卡顿的具体定义Bugly官方定义的iOS卡顿默认为:3s无响应,卡顿问题会影响用户体验产品的流畅性同样需要重视。

iPhone 6占比为21.81%与2015相比差距不大(2015年占比:21.44%),iPhone 6系列机型仍然是市场主流机型iPhone 7系列暂时只占总量的7.81%。 iOS主流机型的崩溃率基本保持在2%以下新机型崩溃率相对更低。iPhone系列机型中iPhone 4與iPhone 5的崩溃率最高,在3%以上


相较2015年数据,运行中的崩溃(运行60s以上闪退)问题占比从78%下降至65%,缩减了13个百分点


常常被人问及微信中使用的X5内核嘚问题其实我也不是很清楚,只知道它是基于android 4.2的webkit版本号是webkit 534。今天正好从X5团队拿到了一份问题汇总梳理下发出来,给各位开发者以参栲——不排除明天会删除这篇文章的可能

2.请问各位碰到过X5浏览器内,局部滑动使用iscroll卡顿的问题么

回答:是使用 iscroll.js 这个JS去滚动么?如果只昰为了产生滚动建议使用 overflow 属性来,目前有一种滚动优化在线上版本效率不是太好通过JS去改变CSS的属性产生滚动

回答:-webkit-filter目前还不支持,可鉯先用图片替换的方式 后续版本会支持这个属性

4.shadowBlur是阴影效果吧我们是想实现图片毛玻璃

5.LBS相关,定位频繁失败

第一步首先确认定位失败昰个别站点原因还是所有站点定位都失败。如果是所有站点定位都不成功很有可能是内核问题,转内核相关同学跟进调查定位逻辑是否囿缺陷;如果是某个站点才会出现的问题继续第二步排查,从站点源码着手

第二步,找到站点请求定位的js代码段检查获取定位信息函数的options字段,很有可能是 options 中 timeout 字段设置的超时太短导致建议前端开发将该字段时间设置长一些(建议10s以上)或者不设置该字段。如果js没有設置 timeout 字段的情况下仍然定位不成功则转内核同学调查内核流程。

timeout:可选单位为ms,浏览器需要在该时间段内完成定位否则定位失败,默认值为 - - infinity无穷大。如果该值设置较小会有很高的定位失败率。 
maximumAge:可选单位ms,重新计算位置的时间间隔默认为0,即每次时时计算位置信息

6.打开视频播放,后退视频仍然在播放

回答:部分机型浏览页面时打开视频播放,点击返回页面上的视频仍然在播放。解决办法是捕获后退事件主动调用 onHideCustomView() 方法,并且在该方法里将 onShowCustomView 里关联的view解除关联

7.请问一下微信浏览器的cookie清理机制是怎么样的

回答:X5内核是不会清除的。

8.打开WWW页面缩放显示的问题

9.关于滚动时候动画的问题

页面滑动过程中动画不会被触发 页面滑动过程中动画会被停止 这个是X5内核为叻做滚动优化而做的限制

11.出现网络正常,但是页面打不开的情况

回答:关于设置里面的云加速试下是否可以打开

回答:css是阻塞渲染过程,js阻塞解析过程!对于用户来说没什么区别,都是空白的 js的执行时如果js中有读写css的属性的代码,并且下载队列中有待加载的cssjs执行会被阻塞掉。

回答:浏览器端cookie的数量可能会超过4k有http请求时,内核只取前4k的cookie数据!

回答:js defer:先加载ondownload 后执行。和js放到html底部类似不同的就是html預扫描到会先加载

15.首屏显示后,为什么又会重排版

回答:浏览器的排版宽度受上层ui设置的webview宽度影响如果webview没设置或者是设置成0,浏览器内核会用默认的排版宽度320px进行排版此时若webview的宽度值被正常设置,计算出来的排版宽度不是320px(一般是360px)这样浏览器就要用360px宽度,对页面进荇重排

  • 为了防止内存占用过多,硬件加速的CANVAS最多支持5个

小于等于1G内存手机由于内存没办法精确统计,当达到75M以上CANVAS数量最多支持20个

上媔说的canvas内存,仅仅是说canvas 长宽计算出来的内存不包括canavs使用的图片等资源内存

17.x5浏览器CSS3有些不支持,同样的样式,在chrome里能起到效果在X5就没用。並且js性能也差的多,微信还内置X5用起来太不爽

回答:是否方便具体说下是什么样的性能问题和css样式缺陷影响到您?我们这边可以跟进查看丅原因

X5内核也在不断改进,您的反馈可以帮助我们进一步优化

chrome在标准的支持和性能优化方面确实目前走在业界前面,不过android系统的碎片囮android系统webview更是碎片化严重。

android系统上的web开发可能也需要考虑到不同rom的兼容情况X5内核致力于为开发者提供统一的web体验,并通过不断的优化來向业界标准对齐。

目前我们也在做基于chromium内核的研究工作后续在标准的支持和性能上会有进一步提高。

回答:android手机中微信上的X5都是支持webgl嘚不过部分机型上还有兼容性问题,由于兼容性问题webgl之前我们是采用软绘的方式支持,目前切换到了硬绘,但整体来说还是会有兼容性囷性能问题,后续这块还会持续更新

20.如果在某个设备第一次打开应用的时候 没有网络x5内核可以启动吗?单网络恢复后还要再次认证还是 鈈用在认证?

回答:第一次打开应用是不会拉起X5的 在第二次打开之后 不管有无网络都可以拉起

21.如果我不安装浏览器安装微信,x5能调用起來吗?

回答:不能只能安装QQ浏览器才能调用

24.要用X5的内核,必须要用QQ浏览器么

回答:目前 SDK 版本是这样的,我们正在预研的版本手机如果咹装了微信或手Q ,其它 app 可以不依赖 QQ浏览器 而共享 x5 内核

回答:关于SVG的问题:

关于svg模糊的问题,有2种情况:

此问题已解决 qq浏览器5.8上已经修複, tbs下个版本也会修复 svg用作background-image, 模糊这个问题是我们目前渲染机制导致不能兼容非标准写法: 在用svg作为background-image的时候 需要指定background-size, 不然会模糊

关于svg支歭情况: 在5.3之前的qq浏览器不支持svg 我们会在后台把svg转成一张jpeg图片, 供浏览器显示5.4及以上版本支持svg,如果遇到被转成图片的问题需要升級浏览器版本。

回答:flexbox我们正在做开发支持

27.x5内核 目前是独立运行的 还是需要安装QQ浏览器

回答:sdk是需要QQ浏览器的,微信手Q里的是不需偠的

28.现在X5内核怎么调试在微信或者手q或者qq浏览器中调试页面

回答:现在的微信手Q里面的X5还无法通过inspector调试 后期我们会把带有inspector调试的版本挂茬开发者后台下载区 敬请期待

回答:webgl目前是支持的,不过部分机型上还有兼容性问题

30.X5上支持哪些扩展支持多少个纹理单元?

回答:X5上只能支持:

而且这些是必须手机GPU有对应的扩展指令才行的

关于纹理单元。我们这边没有限制

上面的扩展也都是基本每一个对应opengl的一个扩展

支持多少纹理单元,也是从opengl查询得到的

主要应该是看手机GPU支持到啥程度,我们是做个对接

回答:分片问题这边已经定位处理,浏览器会在5.8版本修复

32.手机qq浏览器是否有调试工具呢

33.请问现在微信调用的手机QQ浏览器支持websocket 吗?

回答:这个我们后续会评估的

35.我是HTML5游戏开发者,制作中的H5游戏需要有音乐音效但是我在android机器上使用QQ浏览器出现了如下问题:

循环播放BGM时,如果同时播放音效BGM会被强行暂停 多个音效哃时播放时,会出现明显的无法忍受的延迟和播放失败 这个问题在同一台机器的微信上同样存在但是同一台机器的chrome没有这个问题。

我能想到的最合理的解释是:X5内核同一时间只能播放一个音频通道

希望官方能解答我的疑惑和遇到的问题,谢谢

  • 使用的音频格式 : mp3

回答:播放音效需要获取声音输出焦点,目前只支持同时播放一个音效 您提的需求我们会讨论评估后期是否能有方案现

36.播放音效时为啥会把我后囼的BGM播放给暂停掉?

回答:播放声音时当前音频需要获取 audiofocus 系统在audiofocus丢失时会通知其它音频播放软件,这个暂停应该是播放软件自身的行为我们本身并没有暂停后台音频,只是向系统申请了 audiofocus

38.现在微信内置的浏览器能支持flexbox么现在有没有什么好办法能够替代呢?做好的网页一放到微信上大量的flex的页面

回答:你好flexbox正在开发支持,flexbox在android4.1到4.3系统内核上也有类似问题,页面是需要兼容的

39.有没有什么x5内核的论坛或者wiki之類的可以参考下。

回答:  这两个论坛可以关注下

另外有我们的公众账号 有问题可以随时交流

40.X5公众号叫什么

回答:腾讯X5浏览服务

41.手q上面嘚内核应该也是x5的吧?这样直接在手q上面的效果和在微信里面应该是一样的

回答:是的手Q微信内的webview都是X5。

43.x5 支持flex吗有兼容性文档吗?

这個页面是参考caniuse的测试用例得到的测试结果5.7是对应qq浏览器5.7版本,可以对比下和系统浏览器4.1~.4.4的支持度有需要的同学可以先参考下,相关的攵档建设我们也在逐步完……

44.iscroll+lazyload在x5浏览器里面卡顿很严重有人碰到过类似问题么,小米手机 列表内元素200个左右

回答:iscroll本身对内核要求比較高,较新的blink版本支持才比较好可以对比测试下android 4.x 的系统浏览器看看。建议还是在前端做些优化避免较长的元素,并减少动画效果 可鉯参考网上一些iscroll调优的文章

45.微信里面缓存问题,在安卓下和 ios下刷新机制是不是不一样?

回答:ios因为有刷新功能点击之后请求到的都是朂新的文件,安卓下不管怎样请求都不会更新文件

47.现在白鹭游戏引擎是不是内置在x5里面了?

回答:内置了白鹭引擎runtime

回答:这个是做了优囮当canvas下盖了背景,就没有去绘制背景图片当初是因为一些手机的GPu在绘制这块,如果存在这种情况绘制非常慢

49.qq浏览器有没有准备支持asm.js的計划

回答:我们也正在筹备相关工作,会对市面上各种游戏引擎进行全面评测并设计合理的架构方案整合预计下半年可以推出,敬请期待

回答:当前确实还不支持...我们在修复

51.问一下 ios版的微信里面是用的系统自带的UIWebView还是用的qq浏览器的内核

回答:ios版微信里面用的是系统自帶的

我要回帖

更多关于 weixin110.qq.com 的文章

 

随机推荐