(3) 周期短
嵌入式应用程序跟桌面、Web软件的开发流程有很多不同之处,在精简程序的同时,不仅缩减了冗长的代码,也减少了开发的周期,项目周期缩短,相同需求的情况下,自然开发成本就会降低。
3.5.3 系统安全性分析
因为程序的目的专一,并无太多可能的安全问题。但是由于嵌入式交互的用户体验占了很重要的部分,例如Linux下进程之间无法互相通信,产生进程锁时就会出现主UI进程未响应,超过6秒会出现ANR的错误,是会严重影响用户体验、并且不被允许的。在移动设备上运行的程序,大多数都要进行线程的严格化处理和代码的精简,这样才可以做成一个完整的、好的嵌入式应用程序。
4 系统设计
4.1 系统功能结构设计
依据系统的需求设计,按照结构化的系统设计方法,软件的功能结构设计图可以用结构图来进行描述。通过功能的分析,将图画出,如图4.1所示。
图 4.1 软件功能结构图
4.2 文件夹/图片浏览模块设计
实现文件夹/图片组浏览模块,由于他们两个界面的相似性(网格结构),它们共同继承自MainActivity.java。为了提供更好的用户体验,采取了动态、异步加载图片的方法。使用了异步加载AsyncTask,是一个Android内部的异步任务实例。使用AsyncLoadImage进行实现。模块的静态模型图如图4.2所示。
图 4.2 文件夹/图片组浏览模块类图
MainActivity主要实现的是图片的读取和更新List,主要方法如表4.1所示。
表 4.1 MainActivity的主要方法
方法名 返回类型 参数类型 说明
onCreate() void Bundle Activity第一次启动时调用,为入口函数,做通常处理
initGridView() void / 初始化网格布局
loadImages() void / 读取图片数据
getImgIds() ArrayList<Integer> ArrayList<Integer> 获得图片的ID
getTag() String / 获得当前TAG(调试用)
receivedMediaBroadcast() void Intent 获得广播后处理
doFromBroadcast() void boolean, boolean SD卡拔出、SD卡扫描等广播处理
showNoImages() void / 错误处理显示
isBucket() boolean / 返回是否文件夹页面
addImage() void LoadedBitmap... 加入图片并更新
cancelTask() void / 取消异步任务
onStop() void / Activity结束时调用,解绑Broadcast等取消动作处理
其中,因为需要保证界面的完整性,不能使其出现ANR的错误,使用异步加载图片,保证Activity的主线程不被终止。其时序如图4.3所示。
图 4.3 AsyncTask加载图片时序图
4.3 图片浏览模块设计
图片浏览模块的主要功能是对图片的查看、设置为桌面背景,同时对图片进行分享的操作。图片浏览模块使用了工具类中的查询方法,对文件夹下的图片进行了查询,同时需要实现系统的手势操作。他们的静态模型关系如图4.4所示。
图4.4 文件夹/图片组浏览模块类图
Gallery的主要功能是图片浏览、幻灯片播放、设置背景等,如表4.2所示。 基于Android系统的图片浏览器开发与设计(6):http://www.youerw.com/jisuanji/lunwen_2596.html