关于软件加载资源的思考 软件设计

    某日,往奥体中心易杰面试回程,在地铁上听到一人在电话。

    是一男子,二十五六年纪,听出来是说他们的app要上某android市场,但由于他针对四种屏幕分辨率写了四个版本,即有四个apk文件,而彼market要求同一app只能上传一个apk。项目负责人要他立刻解决,他说合并的话,工作量太大云云。

    等他电话完了,我跟他说了下“写成一个版本,自适应屏幕不久行了?”,他说里面的图片都是动态加载的,而且几条数值曲线是用绘图机制生成,如果全部自适应屏幕,则性能极差,根本不能满足要求。

 

    我为他提供了两套解决方案:

        其一,将四个版本的图片放到一个apk中,第一次启动时检测屏幕分辨率,并将不同的绘图折点等必要信息存入一个配置文件,启动时进行一次io操作就行。

        其二,将一组大图放入apk,程序第一次运行时检测分辨率(or机型),并根据结果利用大图生成小图(编码实现并不困难,有类库可用),并且生成绘图的配置文件。

 

    并且对于两种方案都有相应的容错机制,比如启动时加载资源前先检测资源的存在性于合法性,如果资源不存在或不合法,则应该生成报错信息,并且提供给用户,friendly interface。并且可以从服务器下载损坏/丢失部分资源,然后再运行。

 

    对于以上两种解决方案,其核心思想为兼容性控制,以及模块化、信息隐藏,手法类似于设计模式中的策略模式。

    需要知道目前android硬件分化、版本分化太严重,要写出能够在各个版本机型上流畅运行的程序,则需要要求程序设计具备很高的兼容性,在设计的时候要考虑到程序的适用范围,并且如屏幕分辨率,物理按键,GPS模块是否具备等。但是在真正安装好了之后,就应该让它成为机子的定制软件,而不必再体现出差异性,所以很多事情可以在第一次启动时完成,将变化消弥,从而提高性能。

 

    顺便感慨一下,二玉哥的课实在是软院精华所在,如果没有他的课,软件学院可以更名为码农学院了。

    最近在连编程内功,发现自己以前写的几乎都是垃圾,一堆可运行的或不可运行的垃圾,惭愧万分,自此,勤练内功!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值