论坛首页 移动开发技术论坛

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

浏览 2472 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-07-03  

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

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

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

 

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

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

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

 

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

 

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

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

 

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

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

 

   发表时间:2011-07-03  
难道这个不能解决??

http://developer.android.com/guide/practices/screens_support.html
0 请登录后投票
   发表时间:2011-07-03  
这个是官方的解决方案,是在运行是对图片,布局等资源进行处理。比较耗系统资源。而我提供的方案是在第一次运行时检测机子,进行针对性定制,可以理解为二次编译,这样的话,在运行时直接使用,会提高性能
0 请登录后投票
   发表时间:2011-07-09  
不错哦,学习了!
0 请登录后投票
   发表时间:2011-07-11  
强大的手机应用开发平台——统一开发环境!哇咔咔
最近发现了一个叫统一开发环境的好东西,支持Android、J2ME(K-Java)、Symbian原生态开发,看资料说后续版本还会提供跨平台开发插件。装完就可以用,而且还可以将开发出来的代码放在配好的模拟器上直接运行。有兴趣的同学也可以去试试咯,下载地址如下:
文档资料,提供产品介绍、开发实例等等。就算不懂开发的人也可以下载,根据实例操作体验http://devfile.mmarket.com/upload/MM_UDE_1.0_White_paper.pdf
下面是不同操作系统需要用的软件
文件1,
http://devfile.mmarket.com/upload/MM_UDE_1.0.36.2000.part1.rar
文件2,
http://devfile.mmarket.com/upload/MM_UDE_1.0.36.2000.part2.rar
文件3,
http://devfile.mmarket.com/upload/MM_UDE_1.0.36.2000.part3.rar
0 请登录后投票
论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics