android基础

 

今天主要SharedPreferesSQLite

SharedPreferes:SharedPreferencesAndroid平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长整形、Int整形、String字符串型的保存,它是什么样的处理方式呢?SharedPreferences类似过去Windows系统上的ini配置文件,但是它分为多种权限,可以全局共享访问,android123提示最终是以xml方式来保存,整体效率来看不是特别的高,对于常规的轻量级而言比SQLite要好不少,如果真的存储量不大可以考虑自己定义文件格式。xml 处理时Dalvik会通过自带底层的本地XML Parser解析,比如XMLpull方式,这样对于内存资源占用比较好。

这种方式应该是用起来最简单的Android读写外部数据的方法了。他的用法基本上和 J2SE(java.util.prefs.Preferences)中的用法一样,以一种简单、透明的方式来保存一些用户个性化设置的字体、颜色、位置等参数信息。一般的应用程序都会提供“设置”或者“首选项”的这样的界面,那么这些设置最后就可以通过Preferences来保存,而程序员不需要知道它到底以什么形式保存的,保存在了什么地方。当然,如果你愿意保存其他的东西,也没有什么限制。只是在性能上不知道会有什么问题。

Android系统中,这些信息以XML文件的形式保存在

/data/data/PACKAGE_NAME/shared_prefs目录下。

SharedPreferences pre = getSharedPreferences("soft",

Context.MODE_WORLD_READABLE);

在这里我们可以调用 activity 为我们提供的方法,这个方法有两个参数:

1. 文件名 。在这里要特别注意 。 因为在 Android 中已经确定了 SharedPreferences 是以 xm l形式保存,所以,在填写文件名参数时,不要给定 ” .xml ” 后缀, android 会自动添加。它是采用键值对的形式保存参数 。 当你需要获得某个参数值时, 按照参数的键索引即可。

2. 第二个可以理解为创建模式和之前的文件存储的模式是一样的。

Context. MODE_PRIVATE

Context. MODE_APPEND MODE_APPEND

Context. MODE_WORLD_READABLE

Context. MODE_WORLD_WRITEABLE

例如:

1资源:

<string name="name_text">姓名string>

<string name="age_text">年龄string>

<string name="save_text">提交string>

2布局:

xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >


<LinearLayout

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:orientation="horizontal" >


<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginRight="30dp"

android:text="@string/name_text" />


<EditText

android:id="@+id/nameEt"

android:layout_width="fill_parent"

android:layout_height="wrap_content" />

LinearLayout>

3实现保存:

private void findViews() {

nameEt = (EditText) this.findViewById(R.id.nameEt);

ageEt = (EditText) this.findViewById(R.id.ageEt);

saveBtn = (Button) this.findViewById(R.id.saveBtn);


saveBtn.setOnClickListener(new View.OnClickListener() {


public void onClick(View v) {

String name = nameEt.getText().toString().trim();

int age =

Integer.valueOf(ageEt.getText().toString().trim());

SharedPreferences sharedPreferences =

SharedpreferencesTestActivity.this

.getSharedPreferences("myOption", MODE_PRIVATE);

Editor editor = sharedPreferences.edit();

editor.putString("name" ,name);

editor.putInt("age", age);

editor.commit();

}

});

}

SQLite数据库: SQLite 是一个开源的嵌入式关系数据库SQLite 可移植性好、 很容易使用 、 很小 、 高效而且可靠 。目前在 Android 系统中集成的是 SQLite3 版本, SQLite 不支持静态数据类型, 而是使用列关系 。 这意味着它的数据类型不具有表列属性, 而具有数据本身的属性 。 当某个值插入数据库时, SQLite 将检查它的类型。如果该类型与关联的列不匹配,则 SQLite 会尝试将该值转换成列类型。如果不能转换,则该值将作为其本身具有的类型存储。SQLite 支持 NULL INTEGER REAL TEXT BLOB 数据类型。例如:可以在 Integer 字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中存放日期型值。但是有一种例外,如果你的主键是 INTEGER ,那么只能存储 6 4位整数, 当向这种字段中保存除整数以外的数据时 , 将会产生错误。 另外 , SQLite 在解析REATE TABLE 语句时,会忽略 CREATE TABLE 语句中跟在字段名后面的数据类型信息。

SQLite 的特点

SQlite数据库总结起来有五大特点:

1. 零配置

SQlite3 不用安装、不用配置、不用启动、关闭或者配置数据库实例。当系统崩溃后不用做任何恢复操作,在下次使用数据库的时候自动恢复。

2. 可移植

它是运行在 Windows Linux BSD Mac OS X 和一些商用 Unix 系统, 比如 Sun Solaris IBM AIX ,同样,它也可以工作在许多嵌入式操作系统下,比如 Android QNX VxWorks Palm OS Symbin Windows CE

3. 紧凑

SQLite 是被设计成轻量级、自包含的。一个头文件、一个 lib 库,你就可以使用关系数据库了,不用任何启动任何系统进程。

4. 简单

SQLite 有着简单易用的 API 接口。

5. 可靠

SQLite 的源码达到 100% 分支测试覆盖率。

SQLiteOpenHelper

抽象类SQLiteOpenHelper用来对数据库进行版本管理,不是必须使用的。

为了实现对数据库版本进行管理, SQLiteOpenHelper 类提供了两个重要的方法, 分别onCreate(SQLiteDatabase db) onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)用于初次使用软件时生成数据库表,后者用于升级软件时更新数据库表结构。

public SQLiteOpenHelper (Context context, String name,

SQLiteDatabase.CursorFactory factory, int version)

Context :代表应用的上下文。

Name : 代表数据库的名称。

Factory: 代表记录集游标工厂 , 是专门用来生成记录集游标, 记录集游标是对查询结果进行迭代的,后面我们会继续介绍。

Version :代表数据库的版本,如果以后升级软件的时候,需要更改 Version 版本号,那么onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 方法会被调用,在这个方法中比较适合实现软件更新时修改数据库表结构的工作。

你可能感兴趣的:(android,sqlite,数据库,layout,integer,嵌入式操作系统)