西南科技大学本科生毕业论文
第4章 Android音乐播放器存储设计
4.1 本地存储
该系统支持用户自定义偏好设置,因此需要设计本地存储。Android目前有以下三种存储方式。
(1) 使用SharedPreferences存储数据
适用范围:保存少量的数据,且这些数据的格式非常简单:字符串型、基本类型的值。比如应用程序的各种配置信息(如是否打开音效、是否使用震动效果、小游戏的玩家积分等),解锁口令密码等。
核心原理:保存基于XML文件存储的key-value键值对数据,通常用来存储一些简单的配置信息。通过DDMS的File Explorer面板,展开文件浏览树,很明显SharedPreferences数据总是存储在/data/data/
核心原理: Context提供了两个方法来打开数据文件里的文件IO流 FileInputStream openFileInput(String name); FileOutputStream(String name , int mode),这两个方法第一个参数 用于指定文件名,第二个参数指定打开文件的模式。
(3) SQLite存储数据
SQLite是轻量级嵌入式数据库引擎,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。现在的主流移动设备像Android、iPhone等都使用SQLite作为复杂数据的存储引擎,在为移动设备开发应用程序时,也许就要使用到SQLite来存储大量的数据,所以就需要掌握移动设备上的SQLite开发技巧。 (4) 结论
21
西南科技大学本科生毕业论文
根据上面的分析,只需要存储一些基本配置,因此只需要选择一种轻量级的存储方式即可,所以,选择使用SharedPreferences来存储数据。将需要保存的数据以key-value形式写入xml文件,文件大小小于1KB。 保存的数据格式如下
// 是否允许移动网络下载
name=\ // 播放模式 4.2 远程存储 该系统需要查看在线歌曲排行榜、搜索在线歌曲,因此需要远程服务器存储数据,这里远程服务器不在本设计的范畴之内,因此这里不过多讨论。 22 西南科技大学本科生毕业论文 第5章 Android音乐播放器详细设计与实现 本章将根据系统概要设计,对每个部分进行详细设计,给出代码实现,代码分析,并对期间遇到的问题进行详细讨论。 5.1 系统架构详细设计 5.1.1 系统架构方式分析 (1) 现状 Android系统App目前有三种主流的架构方式: a) Native 原生方式 b) Html5 万维网的核心语言、标准通用标记语言下的一个应用超文本标记语言(HTML)的第五次重大修改。 c) React Native React Native使你能够在Javascript和React的基础上获得完全一致的开发体验,构建世界一流的原生APP。 React Native着力于提高多平台开发的开发效率 —— 仅需学习一次,编写任何平台。(Learn once, write anywhere) Facebook已经在多项产品中使用了React Native,并且将持续地投入建设React Native。 (2) 分析 三种架构方式的对比分析: a) 开发方式 ? 代码结构: React Native更为合理,组件化程度高 ? UI布局:Web布局灵活度 > React Native > Native ? UI截面图:React Native使用的是原生组件 ? 路由/Navigation:React Native & Native更胜一筹 23 西南科技大学本科生毕业论文 ? 第三方生态链:Native modules + js modules = React Native modules b) 性能 & 体验 ? 内存:Native最少;因为React Native含有框架,所以相对较高,但是 后期平稳后会优于Native。 ? CPU:React Native居中。 ? 动画:React Native动画需求基本满足。 ? 安装包体积:React Native框架打包后,811KB。相比热更新,可以忽 略和考虑资源规划。 ? Big ListView ? 真机体验:Native >= React Native > H5/Hybrid c) 更新 & 维护 ? 更新能力: H5/Hybird > React Native > Native ? 维护成本: H5/Hybird <= React Native < Native React Native定制难度相比Native有些大;但是具备跨平台能力和热更新能力。 (3) 结论 考虑到项目并不需要热更新,偏向于离线使用,播放界面专辑封面和歌词使用了大量动画,因此,综合考虑决定使用Native架构方式开发本项目。 5.1.2 系统框架分析 论文实现了一个个性化的音乐播放器。在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务。众所周知,音乐播放需要支持应用退出后继续播放,因此不能在Activity中直接播放音乐,因为这样的话界面退出后音乐就停止播放了。 (1) 使用Service播放音乐 Android SDK提供了Service,用于类似*nix守护进程或者windows的服务。 Service有两种类型: 本地服务(Local Service):用于应用程序内部 远程服务(Remote Sercie):用于Android系统内部的应用程序之间 前者用于实现应用程序自己的一些耗时任务,比如查询升级信息,并不占用应 24