基于 android 数据备份恢复的一种实现
引言
随着 3G 时代的到来,移动互联网的发展,手机的功能越来越强大,手机里的数据对每个用户来说都非常的重要,特别是通讯录、日程、短信息、邮件等数据,一旦手机丢失、误删或其他意外使得数据无法正常使用,会给用户带来麻烦,数据备份与恢复这个应用可以帮助用户解决这个
问题。
本文主要论述了基于 Android 平台所提供的开发框架和应用组件,并给出了一种数据备份恢复的
设计与实现。
背景知识介绍
当前流行的智能手机操作
系统有 Windows Mobile,Symbian,iPhone OS,Android 等。本文基于目前最热门的 Android 系统平台,该平台具有开源、易用、开发方便、与个人电脑有较强的融合性等众多优势。
Android 架构
图 1. Android 架构图
Application:
Android 会与一个核心应用程序包一起发布,如通讯录、短信息、浏览器等,所有的应用使用
Java 语言所开发。
Application Framework:
Android 应用程序框架对于开发者也完全可以访问核心应用程序所使用的 API 框架。该应用程序架构用来简化组件
软件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块。该应用程序重用机制使得组建可以被用户替换。
Libraries:
Android 程序库包括一个被 Android 系统中各种不同组件所使用的 C/C++ 库集。该库通过 Android 应用程序框架为开发者提供服务。
Linux Kernel:
内核 Android 的核心系统服务依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理,
网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件堆栈之间的硬件抽象层。
回页首
备份恢复
备份的方式有本地备份、网络备份,本地备份是直接将数据备份到 SDcard 存储介质中;网络备份是将数据备份到网络服务器中。网络服务器系统是基于 J2EE 架构,通过 HTTP(HTTPS)协议对终端提供服务,备份的应用的数目可以大于等于 1,这里只备份通讯录。系统体系结构图如下所示:
图 2. 数据备份与恢复体系结构图
本地备份恢复
本地备份恢复客户端的流程
用户选择本地 Backup 或 Restore,通过向 Contacts 发送广播信号,如果 Contacts 准确收到广播信号后,开始执行 Backup 或 Restore 操作,完成后反馈操作结果。流程图如下所示:
图 3. 本地备份恢复流程图
本地备份恢复客户端的序列图:
在序列图中,客户端选择本地备份或本地恢复后,发送广播消息通知 Contacts 应用开始备份或恢复 (ContactsReceiver 根据信号类别 : 执行备份或恢复操作 ),通过 FileInputStream 和 FileOutputStream 对数据库文件进行 read/write。
如果是本地备份则将自身的数据库文件写到 SDCard;如果是本地恢复将 SDCard 中对应的文件写到 Contacts 应用对应的路径下,用以覆盖原始数据库文件。
用 Environment.getExternalStorageDirectory() 方法获取 SD 卡的路径 , 卡存储空间大小及已占用空间获取方法 :
/* 获取存储卡路径 */
File sdcardDir=Environment.getExternalStorageDirectory();
/*StatFs 看文件系统空间使用情况 */
StatFs statFs=new StatFs(sdcardDir.getPath());
/*Block 的 size*/
Long blockSize=statFs.getBlockSize();
/* 总 Block 数量 */
Long totalBlocks=statFs.getBlockCount();
/* 已使用的 Block 数量 */
Long availableBlocks=statFs.getAvailableBlocks();
序列图如下所示:
图 4. 本地备份恢复序列图
本地备份恢复客户端的实现:
如下图给出了 BackupRestore