android数据存储

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在Android中,提供了三种数据存储的途径,和两种存储方式。

三种途径:

l 系统配置(Shared Preferences):

这类应用主要是系统的配置信息的保存,比如我给程序界面设置了颜色,我想在下一次启动时还是能够保留上次设置的颜色。由于Android系统的界面是采用Activity栈的形式,在系统资源不足时,会收回一些界面,那么,我想有些操作也是需要在不活动时保留下来的,等再次激活时能够显示出来。

l 文件(Files)

Android是一个操作系统,自然而然对存储系统会有一个管理,因为采用提Linux核心,所有在Andorid系统中,文件也是Linux的形式。当然我们的应用程序也就可以把数据以文件的形式记录下来咯。

l 数据库(SQLite Databases)

在Andriod系统中,也少不了一个数据库管理,但考虑到系统资源(内存,硬盘),选择了轻便型的数据库SQLite,这是一个开源的关系型数据库,与普通关系型数据库一样,也具有ACID的特性。

两种存储方式:

主要是根据数据库共享方式来分

l 程序内自用:

通常我们程序中需要的数据一般都是为本程序来用,所以我们用上面三种途径来创建的程序都是默认为本程序使用,其他程序无法获取操作。

我们ADB插件功能在命令行下输入:adb shell 来进入手机的文件系统,进入CD /data/data 目录。然后ls查看,我们发现,我们在系统中安装的每个程序在这里都有一个文件夹,再次进入我们的程序后ls查看,会出现几个目录:shared_prefs、files、databases,这几个目录其实就是存的我们程序内自用的数据,内容分别就是由上面三种途径创建的,当然如果没有创建过,这个目录可能不存在。

l 数据需要共享:

这类数据通常是我们的一些共用数据,很多程序都会来调用,比如电话薄数据,就不可能存为私有的了。当然,这种方式的话,上面三种途径中的系统配置就不适用了,“系统配置”

只能由本程序访问。也就是说,只有文件和数据库可以共享。

具体用没我们下面依次试一下:

(一)系统配置

这类数据存储形式是NVP形式即,name和value的映射map。

存:

// 取得活动的preferences对象.

SharedPreferences uiState = getPreferences(0);

// 取得编辑对象

SharedPreferences.Editor editor = uiState.edit();

// 添加值

editor.putString(KEY, value);

editor.putBoolean(KEY, value);

mit();//提交保存.

取:

//取得活动的preferences对象.

SharedPreferences settings = getPreferences(Activity.MODE_PRIV A TE);

// 取得值.

String value = settings.getString(KEY, "默认值");

Boolean value = settings.getBoolean(KEY, false);

存取时间:

有了存取的方法后,我们就要想在什么时候来存取:

protected void onPause()//系统通知暂停,可以保存设置

public void onDestroy()//系统通知关闭,可以保存设置

public void onCreate(Bundle savedInstanceState) //系统启动,可以打开设置

同样还有其他状态,我们可以根据实际情况来处理

(二)文件操作

l 打开文件并可操作,如果文件不存在会自动创建:

FileOutputStream fos = openFileOutput(FILE_NAME, Context.MODE_PRIVA TE);

//操作时,在fos里写入值即可

l 读文件:

FileInputStream fis = openFileInput(FILE_NAME);

l 取得当前活动创建的文件列表:

String[] lst =fileList()

l 删除文件:

super.deleteFile(FILE_NAME);

(三)SQLite数据库操作

数据库操作无非是建库、建表、增、删、改、查的一些常用功能。在Android系统中封装了一个SQLiteDatabase类,用于这些操作。

l 建库

创建数据库,是由SQLiteOpenHelper类自动完成,同时,创建后,会返回一个SQLiteDatabase 类:

try {

SQLiteOpenHelper dbHelper= new SQLiteOpenHelper(context,DBName,null,1);

db = dbHelper.getWritableDatabase();

} catch (SQLiteException ex) {

db = dbHelper.getReadableDatabase();

}

其中参数DBName就是数据库的名称。getWritableDatabase(),这方法就会获取数据库对象,如果库不存在就会新建,但这里为什么还要包一层catch呢,主要考虑到,手机的资源有限,有时空间不足了,就无法再写入数据,但这里我们可以读啊,所以在catch中调用了getReadableDatabase。

l 建表

_db.execSQL(“create table tableName (id integer primary key autoincrement,name text not null);”);

看到,这个建表其实跟我们写的SQL很类似,只是可能一些语法细节不同,具体这个就不写了,google一下会N多了。

l 增

当然我们可以执行一条SQL语句来插入,我们也可以这样来:

ContentV alues newTaskV alues = new ContentValues();

// Assign values for each row.

newTaskValues.put(KEY_TASK, value);

newTaskValues.put(KEY_CREATION_DATE, value);

// Insert the row.

相关文档
最新文档