某日,往奥体中心易杰面试回程,在地铁上听到一人在电话。
是一男子,二十五六年纪,听出来是说他们的app要上某android市场,但由于他针对四种屏幕分辨率写了四个版本,即有四个apk文件,而彼market要求同一app只能上传一个apk。项目负责人要他立刻解决,他说合并的话,工作量太大云云。
等他电话完了,我跟他说了下“写成一个版本,自适应屏幕不久行了?”,他说里面的图片都是动态加载的,而且几条数值曲线是用绘图机制生成,如果全部自适应屏幕,则性能极差,根本不能满足要求。
我为他提供了两套解决方案:
其一,将四个版本的图片放到一个apk中,第一次启动时检测屏幕分辨率,并将不同的绘图折点等必要信息存入一个配置文件,启动时进行一次io操作就行。
其二,将一组大图放入apk,程序第一次运行时检测分辨率(or机型),并根据结果利用大图生成小图(编码实现并不困难,有类库可用),并且生成绘图的配置文件。
并且对于两种方案都有相应的容错机制,比如启动时加载资源前先检测资源的存在性于合法性,如果资源不存在或不合法,则应该生成报错信息,并且提供给用户,friendly interface。并且可以从服务器下载损坏/丢失部分资源,然后再运行。
对于以上两种解决方案,其核心思想为兼容性控制,以及模块化、信息隐藏,手法类似于设计模式中的策略模式。
需要知道目前android硬件分化、版本分化太严重,要写出能够在各个版本机型上流畅运行的程序,则需要要求程序设计具备很高的兼容性,在设计的时候要考虑到程序的适用范围,并且如屏幕分辨率,物理按键,GPS模块是否具备等。但是在真正安装好了之后,就应该让它成为机子的定制软件,而不必再体现出差异性,所以很多事情可以在第一次启动时完成,将变化消弥,从而提高性能。
顺便感慨一下,二玉哥的课实在是软院精华所在,如果没有他的课,软件学院可以更名为码农学院了。
最近在连编程内功,发现自己以前写的几乎都是垃圾,一堆可运行的或不可运行的垃圾,惭愧万分,自此,勤练内功!
分享到:
相关推荐
7.5 后记:关于壳和程序的思考 第8章 Visual Basic 6 逆向工程 8.1 简介 8.2 P-code传奇 8.3 VB编译奥秘 8.4 VB与COM 8.5 VB可执行程序结构研究 8.6 VB程序事件解读 8.7 VB程序图形界面(GUI)解读 8.8 VB程序...
7.5 后记:关于壳和程序的思考 第8章 Visual Basic 6 逆向工程 8.1 简介 8.2 P-code传奇 8.3 VB编译奥秘 8.4 VB与COM 8.5 VB可执行程序结构研究 8.6 VB程序事件解读 8.7 VB程序图形界面(GUI)解读 ...
等现成IP资源,设计并实现高性能嵌入式硬件/软件系统。本实验教程也可以作为集成电路设计专业系统芯片(SoC)前端逻辑设计和验证课程的实验教材。为了使阐述的内容更加具体,本教程中的每个实验均选用Altera FPGA ...
[Trial version] 7.5 后记关于壳和程序的思考 [Trial version] 加壳技术探讨-加壳时处理IAT.htm [Trial version] 第8章 Visual Basic 6 逆向工程 [Trial version] VB的Native Code的传奇.htm [Trial version] ...
等现成IP资源,设计并实现高性能嵌入式硬件/软件系统。本实验教程也可以作为集成电路设计专业系统芯片(SoC)前端逻辑设计和验证课程的实验教材。为了使阐述的内容更加具体,本教程中的每个实验均选用Altera FPGA ...
等现成IP资源,设计并实现高性能嵌入式硬件/软件系统。本实验教程也可以作为集成电路设计专业系统芯片(SoC)前端逻辑设计和验证课程的实验教材。为了使阐述的内容更加具体,本教程中的每个实验均选用Altera FPGA ...
等现成IP资源,设计并实现高性能嵌入式硬件/软件系统。本实验教程也可以作为集成电路设计专业系统芯片(SoC)前端逻辑设计和验证课程的实验教材。为了使阐述的内容更加具体,本教程中的每个实验均选用Altera FPGA ...
DbHelperV2 - Teddy的通用数据库访问组件设计和思考 也论该不该在项目中使用存储过程代替SQL语句 如何使数据库中的表更有弹性,更易于扩展 存储过程——天使还是魔鬼 如何获取MSSQLServer,Oracel,Access中的数据字典...
无限制简体中文版,很好用的电子教室(电脑教室)管理软件 适用于Windows的课堂管理系统 NetSupport School 是一流的培训软件解决方案,让教师能够以个别方式、按预定小组或者对整个班级进行辅导、监视,并与学生...
7.4.1 sdk的意义 <br/> 7.4.2 做一个带sdk的壳 <br/>7.5 后记:关于壳和程序的思考 <br/> <br/> <br/>第8章 Visual Basic 6 逆向工程 <br/>8.1 简介 <br/>8.2 P-code传奇 <br/>8.3...
2.2 应用系统和软件的安全问题 如果计算机在网络上传输数据时要安装或加载相应的程序,而安装或加载的程序有漏洞和后门程序的话,在通信时,网络入侵者就会利用这些漏洞或后门非法侵入,窃取数据,产生威胁,如我们...
在对如何简化系统编码和含义进行了一些思考之后,我在MotiroJS中定义了三种主要的片段类型,这些片段类型链接在一起构成一个整洁而有意义的开发设计。 这些片段又被称为网状代码的代码所限制。 片段类型 资源 资源...
7.3.1 判断文件尺寸 7.3.2 检查标记 7.3.3 外部检测(使用dll) 7.3.4 hook 相关的api(防止loader和调试api)7.4 使用sdk把程序和壳溶为一体 7.4.1 sdk的意义 7.4.2 做一个带sdk的壳7.5 后记:关于壳和程序的思考 第8章 ...
余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...
余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...