声明:学习的书籍《Android应用开发揭秘》,这里记录学习该书籍的日志,引用的相关代码与总结描述,没有商业的用途,完全是自我学习的一个记录,刚刚学习不可避免会出现很多问题,若是有错误还请大家多多批评。
学习完基本的控件与布局之后,我跳过了游戏编程的章节,直接开始了android关于数据的操作的学习,游戏编程准备放到后面学习,而学习完基本的控件以及相关事件操作之后,按照学习Web开发的流程,也就是牵涉到了数据操作的数据,包括文件,网络资源以及数据库操作,这块内容,自己反复学习了好几遍因为毕竟每个应用程序都不是独立存在的,数据操作不可避免。废话不说了,开始吧。
一、数据存储之SharedPreferences
对于SharedPreferences的理解,我个人认为就是针对一个程序的init配置文件,也可以理解为我们web开发中得cookie。它存储的方式是键值对的方式进行存储的,而且Android中SharedPreferences也提供了各种数据类型的get方法。注意,SharedPreferences是一个接口,而且一般都是通过getPreferences方法获取Preferences对象。通过Preferences对象的edit()方法获取编辑对象。
通过编辑对象可以对里面的数据进行更新与维护。
实例分析:该程序是个音乐播放程序,若是在按照返回键退出程序时音乐还在播放,请保存当前音乐的状态,下次启动时音乐状态就是开启的。
音乐播放类MIDIPlayer关键代码:
而SharedPreferencesActivity类关键代码:
【扩展学习】
这里需要强调的是:多个程序之间是不能直接共享Preferences数据的。
1. haredPreferences的文件实际是存储在一个文件中,如下图,切换到DDMS视图,

每在模拟器中安装一个项目,对应在data/data目录下产生一个文件夹,若是使用SharedPreferences就会有一个shared_prefs文件夹,
对于本程序对应的SharedPreferencesActivity.xml 内容为:
2 SharedPreferences相关API介绍
内部类
interface SharedPreferences.Editor——于修改SharedPreferences对象设定值的接口。
interface SharedPreferences.OnSharedPreferenceChangeListener ——接口定义一个用于在偏好设定(shared preference)改变时调用的回调函数。
公共方法
public abstract boolean contains (String key) ——判断preferences是否包含一个preference。
参数:key 想要判断的preference的名称
返回值:Peferences中存在preference,则返回true,否则返回false。
public abstract SharedPreferences.Editor edit ()
针对preferences创建一个新的Editor对象,通过它你可以修改preferences里的数据,并且原子化的将这些数据提交回SharedPreferences对象。(译者注:原子化——作为一个整体提交,原子性)
注意:如果你想要在SharedPreferences中实时显示,刚通过Editor对象进行的修改,那么你必须调用commit()方法。
返回一个SharedPreferences.Editor的新实例,允许你修改SharedPreferences对象里的值。
public abstract Map<String, ?> getAll ()——取得preferences里面的所有值,返回一个map,其中包含一列preferences中的键值对
异常:空指针异常(NullPointerException)
public abstract boolean getBoolean (String key, boolean defValue)——从preferences中获取一个boolean类型的值。
参数:key获取的preference的名称
defValue 当此preference不存在时返回的默认值
返回值:如果preference存在,则返回preference的值,否则返回defValue。如果使用此名称的preference不是一个boolean类型,则抛出ClassCastException。
异常:ClassCastException
public abstract float getFloat (String key, float defValue)
public abstract int getInt (String key, int defValue)
public abstract long getLong (String key, long defValue)
public abstract String getString (String key, String defValue)
public abstract void registerOnSharedPreferenceChangeListener (SharedPreferences.OnSharedPreferenceChangeListener listener)
注册一个回调函数,当一个preference发生变化时调用。
public abstract void unregisterOnSharedPreferenceChangeListener (SharedPreferences.OnSharedPreferenceChangeListener listener)
注销一个之前(注册)的回调函数
二、数据存储之Files
有的程序需要把数据中保存到相应的文件中,但是要注意的事文件在多个程序之间也是不能共享的。文件存储数据可以openFileOutput方法打开一个文件进行操作。
实例分析:与上面SharedPreferences例子效果一样。
关键源码:
【扩展学习】
使用Files方式存储数据,同样会在对应data/data目录下面的files文件下也有相关的文件来存储数据,

Music.cfg的文件内容为:
三、数据存储之Web数据操作
很多程序都是通过网络来把数据等信息存储到服务上,同样从服务器上读取相关的数据到自己。最典型的如,手机的邮件的收发,当然要使用网络,必先保证手机的网络是连接上。
这里我就在模拟器下配置了163邮箱的绑定,左图效果图,中间图为接受服务器设置,右图为外发服务器设置。



下面两个例子分别是写数据与取数据,
1. 从发送邮件功能(写数据)
关键源码:
效果图:


2. 从网页获取数据
为了测试从WEB上获取数据,这里我搭建了一个简单TestWeb的Web项目,并用Tomcat发布,在IE上运行,其中在项目根目录下按照数据例子,放了一个android.txt文件。

关键源码:
程序运行效果图:

【扩展学习】:
(1)、android访问网络资源必须要有:
<uses-permission android:name="android.permission.INTERNET" />
不然运行会提示:
Permission denied
(2)、
/* 定义我们要访问的地址url */
URL uri = new URL("http://192.168.8.64:8080/TestWeb/android.txt");
/* 打开这个url连接 */
URLConnection ucon = uri.openConnection();
其中若是本地机器,也不能用localhost或者127.0.0.1,不然会连接不上
(3)、测试访问html文件android.html

android获取时,获取时html的源码而不是内容,因为他没有解析器,而且会是乱码。

以上数据存储就先学到这里,下一篇文章主要是针对数据库的操作。
分享到:
相关推荐
这份“安卓Android源码——学习之数据存储.zip”压缩包很可能是针对Android系统中数据存储方式的源代码分析和教程。在这里,我们将深入探讨Android中的几种主要数据存储方式。 1. **Shared Preferences**: Shared...
Android基础程序设计第...在本章中,我们学习了 Android 的三种数据存储方式:文件存储、SharedPreferences 存储和 SQLite 数据库存储。每种存储方式都有其特点和应用场景,开发者可以根据实际情况选择合适的存储方式。
Android提供了多种数据存储方法,包括文件、SharedPreferences、SQLite数据库、内容提供者以及网络存储等。这里我们将重点讨论使用文件进行数据存储。 Android中的文件存储主要依赖于`Activity`类提供的`...
3. **数据存储**:Android提供了多种数据存储方式,如SharedPreferences、SQLite数据库、文件系统等。便签应用通常会用到SQLite,用于持久化存储用户的便签内容。 4. **AndroidManifest.xml**:这是每个Android应用...
除了直接操作文件外,Android还提供了一个方便的数据持久化工具——`SharedPreferences`。它适用于存储键值对,通常用于保存用户的偏好设置。例如: ```java SharedPreferences preferences = getPreferences...
《Android存储API最佳实践——深度解析storage-samples开源项目》 在Android开发中,数据存储是不可或缺的一部分,它涉及到应用程序的持久化数据管理。本文将深入探讨“storage-samples”开源项目,这是一个由...
- **6.3 数据存储之Files**: 文件存储是最常见的数据存储方式之一,可以将数据保存为文件的形式。 - **6.4 数据存储之Network**: 通过网络请求从服务器获取或上传数据。 - **6.5 Android数据库编程** - **6.5.1 ...
7. **第6章:文件、状态保存与偏好设置**(Files, Saving State, and Preferences):讨论了数据存储的多种方式,如文件系统、SharedPreferences等,并提供了实例代码。 8. **第7章:数据库与内容提供者**...
《Android小游戏水果连连看_安卓源码》是一个用于学习和参考的开源项目,它展示了如何在Android平台上开发一款经典的小游戏——水果连连看。通过分析这个源码,开发者可以深入理解Android游戏开发的基本原理和实践...