没有合适的资源?快使用搜索试试~ 我知道了~
[eoeAndroid特刊]第08期(下):数据存储操作
需积分: 14 3 下载量 189 浏览量
2012-09-27
16:15:30
上传
评论
收藏 4.05MB PDF 举报
温馨提示
试读
37页
[eoeAndroid特刊]第08期(下):数据存储操作
资源推荐
资源详情
资源评论
eoemobile.com
第 8 章 Android 的存储方式
学习目标:
• Android 在存储方面的系统知识;
• 各类存储的使用及步骤;
• SQLite 方式的存储实现 ;
• contentProvider 方式的存储实现。
8.1
存储概述
典型的桌面操作系统提供一种公共文件系统——任何应用软件可以使用它来存储和读取文件,该文件也可以被其他
的应用软件所读取(会有一些权限控制设定)。Android 采用了一种不同的系统,在 Android 中,所有的应用软件数据
(包括文件)为该应用软件所私有。然而,Android 同样也提供了一种标准方式供应用软件将私有数据开放给其他应用软
件。这一章节描述一个应用软件存储和获取数据、开放数据给其他应用软件、从其他应用软件请求数据并且开放它们的
多种方式。
在 Android 中,可供选择的存储方式有 SharedPreferences、文件存储、SQLite 数据库方式、内容提供器(content
provider)和网络,我们将在本章详细介绍。
8.2 SharedPreferences
存储
首先介绍的是 SharedPreferences,其是 Android 提供用来存储一些简单的配置信息的一种机制,例如,一些默认欢迎
语、登录的用户名和密码等。其以键值对的方式存储,使得我们可以很方便的读取和存入,下面看一个演示的例子。
1.第一步
在 Eclipse 中打开 ex_SharedPreferences 项目,其步骤如下所示。
(1)新建一个项目。依次单击 File→ New >→Android Project。
(2)在新建项目的对话框中,选择 Create project from existing source。
(3)单击浏览,找到 ex_SharedPreferences 项目,然后单击确定。
其程序的目录结构如图 8-2-1 所示:
官方社区eoeandroid.com
《Google Android 开发入门与实战》第八章 样章
eoemobile.com
图 8-2-1 程序目录结构
2.第二步
单击运行项目,可以看到主界面如图 8-2-2 所示,这个界面的布局信息都在 main.xml 文件当中,在一个
LinearLayout 当中放了 3 个 TextView 和两个 EditView,代码如下所示:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="vertical"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
>
<TextView
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:text="SharedPreferences demo"
/>
<TextView Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:text="Name:" />
<EditText Android:id="@+id/name"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:
text="" />
<TextView Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:text="Password:" />
<EditText Android:id="@+id/password"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:password="true"
Android:text="" />
</LinearLayout>
如上代码表示:使用 LinearLayout 布局,其中放置三个用来做界面提示的文本框(TextView)组件和两个用于输入
Name 和 Password(注意这里使用了 Android:password="true")的编辑框(EditText)组件,运行这个应用,可以
看到其界面如图 8-1 所示。
官方社区eoeandroid.com
《Google Android 开发入门与实战》第八章 样章
eoemobile.com
图 8-2-2 主界面
在图 8-1 中,我们可以看到,初始状态下两个 EditView 都是空的,现在输入一些字符,如图 8-2-3 所示。
图 8-2-3 输入 Name 和 Password
如图 8-2 所示,我们在 Name 文本框中中输入 IceskYsl,在 Password 文本框中输入 Password,然后退出这个应用。
我们在应用程序列表中找到这个应用,重新启动,可以看到其使用了前面输入的 Name 和 Password,如图 8-2-4 所示。
官方社区eoeandroid.com
《Google Android 开发入门与实战》第八章 样章
eoemobile.com
图 8-2-4 重新启动应用
由此可见,应用保存了我们输入的 Name 和 Password,现在来看看其实现的代码,在 DBSharedPreferences.java 文件
中,此文件的代码如下所示:
package us.imnet.iceskysl.db;
import Android.app.Activity;
import Android.content.SharedPreferences;
import Android.os.Bundle;
import Android.widget.EditText;
public class DBSharedPreferences extends Activity {
public static final String SETTING_INFOS = "SETTING_Infos";
public static final String NAME = "NAME";
public static final String PASSWORD = "PASSWORD";
private EditText field_name; //接收用户名的组件
private EditText filed_
pass; //接收密码的组件
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Find VIew
field_name = (EditText) findViewById(R.id.name); //首先获取用来输入用户名的组件
filed_pass = (EditText) findViewById(R.id.password); //同时也需要获取输入密码的组件
// Restore preferences
SharedPreferences settings = getSharedPreferences(SETTING_INFOS, 0); //获取一个 SharedPreferences 对象
String name = settings.getString(NAME, ""); //取出保存的 NAME
String password = settings.getString(PASSWORD, ""); //取出保存的 PASSWORD
//Set value
field_name.setText(name); //将取出来的用户名赋给 field_name
filed_pass.setText(password); //将取出来的密码赋给 filed_pass
}
@Override
protected void onStop(){
super.onStop();
SharedPreferences settings = getSharedPreferences(SETTING_INFOS, 0); //首先获取一个 SharedPreferences 对象
settings.edit()
.putString(NAME, field_name.getText().toString())
.putString(PASSWORD, filed_pass.getText().toString())
.commit();
} //将用户名和密码保存进去
官方社区eoeandroid.com
《Google Android 开发入门与实战》第八章 样章
eoemobile.com
}
通过上述代码可以看到,在 onCreate 中使用 findViewById 得到两个 EditView 后,使用 getSharedPreferences 取得
SharedPreferences 对象 settings,然后使用 getString 取得其中保存的值,最后使用 setText 将其值设置为两个 EditText 的
值。
而在程序运行onStop过程,也就是在程序退出时,
首先使用getSharedPreferences得到settings,然后调用edit()方法使
其处于可以编辑状态,并使用putString将两个EditText中的值保存起来,最后使用commit()方法提交即可保存。
小知识:
SharedPreferences 保存到哪里去了?
SharedPreferences 是以 XML 的格式以文件的方式自动保存的,在 DDMS 中的 File Explorer 中展开到
/data/data/<package name>/shared_prefs 下,以上面这个为例,可以看到一个叫做 SETTING_Infos.xml 的文件,如
图 8-2-5 所示。
图 8-2-5 SharedPreferences 文件
将其导出到设备中,可以打开这个文件,看到其代码内容为:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="PASSWORD">Password</string>
<string name="NAME">IceskYsl</string>
</map>
小知识:
我们可以通过「getXXX」函数,从 SharedPreferences 中读取不同类型的内容,例如,上面我们使用[
getString ]读取 String 类型的内容。
注意:
Preferences 只能在同一个包内使用,不能在不同的包之间使用。
8.3
文件存储
前面介绍的 Shared Preferences 存储方式非常方便,但是其只适合存储比较简单的数据,如果需要存储更多的数
据,可行选择的方式有好几种,这里先给读者介绍文件存储的方法。
和传统的 Java 中实现 I/O 的程序类似,在 Android 中,其提供了 openFileInput 和 openFileOuput 方法读取设备
上的文件,下面看个例子代码,具体如下所示:
String FILE_NAME = “tempfile.tmp”; //确定要操作文件的文件名
// Create a new output file stream that’
s private to this application.
官方社区eoeandroid.com
《Google Android 开发入门与实战》第八章 样章
剩余36页未读,继续阅读
资源评论
afei198409
- 粉丝: 52
- 资源: 48
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功