本书以Android Studio为开发环境,从移动网络编程应用需求出发,由浅入深、循序渐进地介绍了Android基础编程和网络编程,涵盖了Android移动网络程序开发的理论、实验和课程设计。全书包含四大部分: 第1部分是Android程序开发基础,包括开发环境搭建、移动程序创建、用户界面设计、组件通信、数据存储与访问、广播与后台服务; 第2部分是Android网络编程,包括WiFi操作、TCP、UDP、HTTP、蓝牙和百度地图应用编程; 第3部分是Android移动应用编程实践,包括Android开发环境搭建、移动程序结构、用户界面、组件通信、数据存储与访问、后台服务、WiFi管理、Socket、HTTP、蓝牙及百度应用开发实验; 第4部分是Android移动网络应用编程课程设计,包括设计目的、题目及要求等。
全书采用案例教学和项目引导驱动相结合的方式,除了对每章的重要知识点辅以范例讲解外,还以“移动点餐系统”项目为线索,在将各章节知识点串起来的过程中重点揭示如何将所学技能进行实战,从而领悟到更多的工程技巧。通过本书的学习能让读者快速掌握移动网络应用程序的开发流程和编程技能,并获得较好的工程实践体验。
使用目前流行的Android Studio开发环境,讲解了Studio环境中开发Android应用程序的步骤和方法。
通过引进工程案例,采用项目引导与驱动的方法,改变以往程序设计类课程的单纯知识讲解及简单例子模拟的教学方式,使学生在掌握移动网络编程技能的同时,获得更好的工程实践体验。
内容及案例遵循由浅入深、逐步深入的原则。在知识的讲解上力争做到深入浅出,重难点突出。
第
5
章Android数据存储与访问
5.1简 单 存 储
5.1.1SharedPreferences
SharedPreferences是Android中最容易理解的数据存储技术,常用来存储一些轻量级的数据,采用keyvalue(键值对)的方式保存数据,类似于Web程序的Cookie,通常用来保存一些配置文件数据、用户名及密码等。
SharedPreferences不仅能够保存数据,还能实现不同应用程序间的数据共享,支持三种访问模式: 私有(MODE_PRIVATE)、全局读(MODE_WORLD_READABLE)、全局写(MODE_WORLD_WRITEABLE)。其中MODE_PRIVATE是默认模式,该模式下的配置文件只允许本程序和享有本程序ID的程序访问; MODE_WORLD_READABLE模式允许其他应用程序读文件; MODE_WORLD_WRITEABLE模式允许其他应用程序写文件。如果既要全局读又要全局写,可将访问模式设置为MODE_WORLD_READABLE +MODE_WORLD_WRITEABLE。
除了定义SharedPreferences的访问模式,还要定义SharedPreferences的名称,该名称是SharedPreferences在Android文件系统中保存的文件名称,一般声明为常量字符串,以方便在代码中多次使用,如:
SharedPreferences sharedPreferences = getSharedPreferences("filename", MODE_PRIVATE);
其中,getSharedPreferences()为Android系统函数,通过它可获得SharedPreferences实例。
获取SharedPreferences实例后,通过SharedPreferences.Editor类对SharedPreferences实例进行修改,完成数据设置,最后调用commit()函数保存数据。SharedPreferences广泛支持各种基本数据类型,包括整型、布尔型、浮点型和长整形等,如:
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("Name", "Tom");
editor.putFloat("Height", 1.78f);
editor.commit();
如果需要从已保存的SharedPreferences中读取数据,同样调用getSharedPreferences()函数,并在函数的第1个参数中指明需要访问的SharedPreferences名称,然后通过get()函数获取保存在SharedPreferences中的键值对,如:
SharedPreferences mySdPferences = getSharedPreferences("filename", MODE_PRIVATE);
String name = mySdPferences.getString("Name", "Default Name");
float height = mySdPferences.getFloat("Height", 1.70f);
其中,get()函数的第1个参数是键值对的键名,第2个参数是无法获取键值时的默认值。
Android系统为每个应用程序建立了与包同名的目录,用来保存应用程序产生的数据文件,包括普通文件、SharedPreferences文件和数据库文件等。SharedPreferences产生的文件就保存在/data/data//shared_prefs目录下。
……