如果解决Hybrid开发中的白屏问题
2019-03-27 08:52:26来源: 涂雅博客 阅读 ()
这两天有人在邮件和微博上问我,混合(Hybrid)开发如何解决白屏的问题,本来我是计划要写一写Hybrid开发的各种问题,但看来文章可能会太长,所以还是先谈谈白屏的问题吧。我觉得Android如果使用到Hybrid技术的,也是可以借鉴的,解决思路是一样的。
我们通常把移动开发分为Web、Native和Hybrid,但其实Hybrid又可以细分的。最简单的是在Native中放一个WebView,然后加载一个兼容智能机的网站,其实就相当于在用户的手机上建立一个快捷方式,也算是占据用户桌面的应急用法吧。用这种方法要注意检测网络是否正常,不正常要给予提示,否则苹果是不予通过的。第二种是将Web相关文件全部放在本地,数据库一般用Sqlite做本地存储,用户就算不联网也能工作。第三种可能是以Native为主,在某些特定的模块才会用到WebView。
其实要我说,只有第二种才算是真正的Hybrid,话说Hybrid这个词可真难听,翻译过来的词是杂种、杂交,既然大家都这么用,我也就随了吧。很重要的一点是Native和Web有没有交互,没有的不算,你直接在WebView中加载一个HTML页面,这算哪门子的Hybrid开发,这种也谈不上什么技术含量了,没什么好讲的。你这种开发很难模拟Native的体验嘛,用户一看就不对啊,我说的Hybrid开发是那种多数用户看不出差别的。
之所以我要把Hybrid开发的种类讲清楚,是因为它们遇到的白屏问题有所不同,有些白屏问题是可以通过技术解决的,有些是需要通过设计上去解决的,通常我们说的白屏有三种。
第一种是页面切换带来的白屏,就是你从index.html跳转到product.html会出现的白屏,嵌个WebView就加载一个网站最容易出现这种问题。这个问题只能从设计上解决,技术上是无法解决的,或者解决起来比开发一个Native程序成本还高。正确的做法应该是避免页面之间的跳转,将所有的内容放入到一个HTML中,通过CSS的Display属性来切换View。
第二种是因为页面过长带来的白屏,在iOS的WebView中,如果页面内容过长,iOS是不会一次渲染完成的,所以太长的时候,就会产生一种像Phtoshop中那种透明背景的方格效果。这个问题最好的解决方法还是从设计上入手,避免这种过长的滚动。使用iScroll做滚动可以解决部分问题,但还是不能太长。
第三种白屏是启动的时候有讨厌的白屏,因为WebView加载HTML并渲染有一定的时间,用户一打开你的App,WebView还没有加载并渲染完比,白屏出现了。这种情况解决要用一些技巧,iOS可以用两个View,一个View放上Loading画面,另一个View加载HTML,当HTML加载完毕后,用Javascript通知Native,收到HTML加载完比后Native代码负责切换View即可。
有人肯定要问,为什么不直接用Objective-c代码写WebView的onLoad事件?很简单,因为Load完成可能还有很多事要做,而且一般要延时300毫秒再切换View才能保证白屏不出现。你可能要再问了,直接用延时不好么,为什么要这么麻烦?不同的机器性能不一,而且有些时候内存占得多加载可能就慢点,直接延时太死。
文章来源:涂雅博客
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:网盟环境下广告投放技巧浅析(一)
下一篇:前端开发中Cookie那些事儿
- 如果你把运营干成了客服,那你真的很可悲!运营应该是这样的 2021-05-04
- 亲身经历:3天解决网站被百度网址安全中心拦截的方法 2019-12-13
- 亲身经历:3天解决网站被百度网址安全中心拦截的方法 2019-12-13
- 怎样解决微信公众号内容营销转化率低的问题? 2019-04-10
- 网站没收录,很烦心?解决一个关键因素,网站一个月上百度首 2019-04-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash