`

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

 
阅读更多

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

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

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

 

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

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

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

 

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

 

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

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

 

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

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

 

分享到:
评论

相关推荐

    软件测试中异常思考

    12. 服务器资源测试:通过人为手段,增加软件数据库服务器、web 服务器或者中间件服务器等相关服务器的硬件资源,如:cpu、内存、硬盘等的负载,测试被测系统的反应和其后的补救提示或操作。 13. 断电测试:在测试...

    《3G手机软件开发》 课程设计 Android平台 doc

    2. 课题意义:通过这个项目,开发者能够深化对Android编程的理解,提高软件设计和实现能力,同时增强问题解决和逻辑思考技巧。此外,数独游戏的流行性使其具有较高的实用价值和市场潜力。 3. Android系统介绍和发展...

    软件性能测试基本概念

    - **资源占用**:软件运行时对系统资源(如CPU、内存)的占用情况,资源占用过高会影响整体系统的性能。 **1.1.2 管理员视角的软件性能** 对于系统管理员而言,软件性能关注的是服务器端的表现: - **并发用户数*...

    《Java设计模式》课后习题参考答案-刘伟(20180723).pdf

    - java.util.ResourceBundle#getBundle(),加载资源束。 ***.URL#openConnection(),创建一个URL连接实例。 - java.sql.DriverManager#getConnection(),通过驱动管理器获取数据库连接。 b) 建造者模式(Builder...

    校园网网页设计的思考.pdf

    考虑到用户可能使用不同的硬件设备和软件环境,设计师必须确保网页在各种浏览器和操作系统下都能正常显示和运行。此外,优化网页加载速度也是必要的,避免因页面过大导致用户等待时间过长,从而影响用户体验。 再者...

    从BI项目实践思考软件复杂度控制的常见方法1

    - **渐进式渲染**:对于大型数据集,分批加载和渲染可以提高性能,避免一次性加载带来的内存压力和用户体验问题。 - **并行计算**:利用多核处理器或分布式计算资源,同时处理多个任务,加快计算速度,减少延迟。 ...

    二维动画设计软件应用——Flash-CS6全书电子教案完整版教学设计整本书单元设计全套教案1-7章全.docx

    Flash因其独特的技术优势,在过去很长一段时间内成为了全球最受欢迎的动画设计软件之一。 ### 二、Flash-CS6的教学目标 在教授Flash-CS6时,通常会设定以下几方面的教学目标: #### 知识目标 - **理解基本概念**...

    软件制作源代码

    【软件制作源代码】是一个非常重要的学习资源,尤其对于初学者而言,它是揭开编程和软件开发神秘面纱的关键。源代码是程序员用编程语言编写的原始指令,这些指令告诉计算机如何执行特定任务。通过查看和理解源代码,...

    plane_ticket.rar_ticket_ticket软件_数据库作业

    【标题】"plane_ticket.rar_ticket_ticket软件_数据库作业"是一个关于软件工程的作业,其中涉及到的是使用Java语言连接和操作数据库的部分。这个作业的核心目标可能是设计并实现一个能够处理机票预订(ticket_ticket...

    操作系统课程设计实验报告(附思考题答案).pdf

    例如,关于EOS SDK文件夹的作用,它是提供开发EOS应用程序所需的所有资源的集合,包括头文件、库文件和示例程序等。通过学习SDK,学生可以熟悉API函数和数据类型定义,这对于编写应用程序和理解操作系统如何提供服务...

    软件加密技术内幕

    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程序...

    连连看论文设计毕业设计

    毕业设计是高等教育中一项重要的实践环节,旨在培养学生独立思考、解决问题的能力。本设计以“连连看”游戏为项目,结合计算机科学与技术,全面展示了游戏开发的基本流程和技术要点。本文将详细阐述连连看游戏的设计...

    NVIDIA-徐添豪-大模型时代对基于GPU的软硬件系统设计的思考.pdf

    NVIDIA GPU软硬件系统设计思考 本篇文章由NVIDIA消费互联网行业技术负责人徐添豪所著,主要讨论了大模型时代对基于GPU的软硬件系统设计的思考。徐添豪拥有多年从事基于GPU的解决方案构建和落地工作经验,特别是在...

    围棋象棋打谱软件(绿色,解压可用)

    标题中的“围棋象棋打谱软件”是指专用于学习和分析围棋与象棋对局记录的应用程序。...用户不仅可以按照自己的进度和兴趣选择棋谱进行学习,还可以通过软件的分析功能深入理解每一步棋的含义和背后的战术思考。

    EDA思考题.docx

    7. **生成编程文件**:最后,Quartus生成编程文件(.sof或其他格式),该文件包含了FPGA内部配置的详细信息,可以被加载到FPGA中实现设计。 **实现频率计功能的其他方法:** 除了使用Quartus设计FPGA实现频率计,...

    三菱PLC仿真软件

    这款仿真软件是专为学习和掌握三菱PLC技术而设计的,它提供了真实的PLC操作环境,使用户无需实际硬件即可进行编程、调试和故障排除等实践操作。 三菱PLC仿真软件的主要功能包括: 1. **编程环境**:软件内集成了...

    lightmvc-console2:修正代码,启动时加载所有资源列表-源码时代

    在lightmvc-console2的旧版本中,可能采用的是按需加载或者运行时动态加载资源的方式。这种方式虽然节省了启动时间,但在处理大量资源或者复杂应用时可能会出现延迟,影响用户体验。修正后的代码则采取了预加载策略...

    豌豆荚在用户体验上的思考和原则

    豌豆荚作为一款知名的移动应用管理工具,在产品设计过程中充分考虑了用户体验的重要性,并总结了一系列关于用户体验的思考与原则。 #### 一、整体格局简洁 豌豆荚坚持“简约而不简单”的设计理念,避免在界面设计...

    设计模式源码(适合与参考)

    本压缩包中的资源“设计模式源码(适合与参考)”显然包含了一些常见的设计模式的实现,例如abstractFactory(抽象工厂),bridge(桥接),command(命令),ThinkingInOO(面向对象思考)以及proxy(代理)等。...

Global site tag (gtag.js) - Google Analytics