您的位置:首页 > 移动开发 > Android开发

Android | Android数据存储

2017-12-19 16:46 281 查看
Android上下文对象的使用,其重要的功能之一,就是用于存储应用运行期间产生的中间数据。对于移动互联网应用来说,经常把核心数据存储在服务端,但在实际项目中也会经常使用到Android系统内部的数据存储方案。

一、应用配置(Shared Preferebces)

轻量级的数据存储策略,只能用于存储key-value格式的数据(类似于ini格式),经常用来存储一些类似于应用配置形式的信息。

class a extends Activity{
...
settings=getPreferences(Context.MODE_PRIVATE);
if(settings.getString("username",null)==null){
SharedPreferences.Editor editor=settings.edit();
editor.putString("username","james");
editor.commit();
}
...
}

使用方法如上例,(下面是我的理解,如果有错,感谢指正)
1、getPreferences获得系统配置信息文件的对象,此时会在“/data/data”下对用的应用包名下的shared_prefs目录里,生成一个XML文件来存储系统配置信息。

2、Context.MODE_PRIVATE代表此时shared Preferences存储的数据是仅供应用内部访问的。除此之外,Android系统中还提供MODE_WORLD_READABLE和MODE_WORD_WRITEABLE两种模式,分别用于表示数据是否允许其他应用来读或者写。

3、在操作数据的时候,必须使用SharedPreferences.Editor接口来编辑和保存数据。

4、调用putString方法编辑数据,调用commit方法进行提交,保存数据。

二、本地文件

与上面的应用配置不同,本地文件的可存储的格式是没有限制的,使用范围很广。一般使用openFileOutput来打开一个文件,此方法会返回一个FileInputStream对象,然后就可以选择使用合适的方法来操作数据。

对于cfg或者ini类型的文件,可以使用Properties的load方法来直接载入。

对于普通文件,可以使用InputStreamReader和BufferedReader来读取。

三、数据库

Android系统自带一个文本数据库,即SQLite,它有着与市面上主流的数据库(MySQL、SQLServer等)类似的几乎所有功能,包括事务(Transaction)。

数据库的存储方式偏向于存储的细节。可以把同一类型的数据字段定义好,并保存到统一的数据表中去,进而可以针对每个数据进行更细节的处理。使用数据库来存储数据,可以大大增强应用的结构性和扩展性。经常把SQLite数据库和Android四大组件之一的“数据提供者”结合使用,因为它们对于“增删查改”接口定义和使用实际上是一致的。在使用的过程中经常通过继承SQLiteOpenHelper类并实现其中的抽象方法的形式来构造基础的DB操作类。

...
public class DBHelper extends SQLiteOpenHelper{
/*数据库配置*/
private static final int DB_VERSION = 1;
private static final String DB_NAME = "mydb.db";
private static final String DB_TABLE = "mytable";

/*数据库初始化和更新SQL*/
private static final String SQL_CREATE = "CREATE TABLE ...";
private
4000
static final String SQL_DELETE = "DROP TABLE ...";

/*构造函数*/
public DBHelper(Context context){
super(context,DB_NAME,null,DB_VERSION);
}

/*初始化数据库*/
@Override
public void onCreate(SQLiteDatabase db){
db.execSQL(SQL_CREATE);
}

/*升级数据库*/
@Override
public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
db.execSQL(SQL_DELETE);
}
}
...需要使用的时候,可以通过getReadableDatabase和getWritableDatabase来获取数据库句柄分别进行读和写的操作。数据库文件会被存在shared_prefs和files的统计目录下,名为databases.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: