`

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

阅读更多

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

    是一男子,二十五六年纪,听出来是说他们的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程序...

    软件加密技术内幕 chm

    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)解读 ...

    Verilog SOPC高级实验教程 -夏宇闻-带书签完美清晰版PDF_4/4

    等现成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] ...

    Verilog SOPC高级实验教程 -夏宇闻-带书签完美清晰版PDF_3/4

    等现成IP资源,设计并实现高性能嵌入式硬件/软件系统。本实验教程也可以作为集成电路设计专业系统芯片(SoC)前端逻辑设计和验证课程的实验教材。为了使阐述的内容更加具体,本教程中的每个实验均选用Altera FPGA ...

    Verilog SOPC高级实验教程 -夏宇闻-带书签完美清晰版PDF_1/4

    等现成IP资源,设计并实现高性能嵌入式硬件/软件系统。本实验教程也可以作为集成电路设计专业系统芯片(SoC)前端逻辑设计和验证课程的实验教材。为了使阐述的内容更加具体,本教程中的每个实验均选用Altera FPGA ...

    Verilog SOPC高级实验教程 -夏宇闻-带书签完美清晰版PDF_2/4

    等现成IP资源,设计并实现高性能嵌入式硬件/软件系统。本实验教程也可以作为集成电路设计专业系统芯片(SoC)前端逻辑设计和验证课程的实验教材。为了使阐述的内容更加具体,本教程中的每个实验均选用Altera FPGA ...

    asp.net知识库

    DbHelperV2 - Teddy的通用数据库访问组件设计和思考 也论该不该在项目中使用存储过程代替SQL语句 如何使数据库中的表更有弹性,更易于扩展 存储过程——天使还是魔鬼 如何获取MSSQLServer,Oracel,Access中的数据字典...

    NetSupport School 课堂管理软件(简体中文版)

    无限制简体中文版,很好用的电子教室(电脑教室)管理软件 适用于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...

    以计算机网络安全为题的论文.docx

    2.2 应用系统和软件的安全问题 如果计算机在网络上传输数据时要安装或加载相应的程序,而安装或加载的程序有漏洞和后门程序的话,在通信时,网络入侵者就会利用这些漏洞或后门非法侵入,窃取数据,产生威胁,如我们...

    motirojs:零散的JS框架

    在对如何简化系统编码和含义进行了一些思考之后,我在MotiroJS中定义了三种主要的片段类型,这些片段类型链接在一起构成一个整洁而有意义的开发设计。 这些片段又被称为网状代码的代码所限制。 片段类型 资源 资源...

    加密解密.技术内幕.chm

    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章 ...

    Google Android SDK开发范例大全(第3版) 1/5

    余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...

    Google Android SDK开发范例大全(第3版) 4/5

    余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...

Global site tag (gtag.js) - Google Analytics