2015年的最后一天,今天跟大家分享一下Android开发 项目中,有关于数据的存储的内容。
一 用户偏好设置
用户偏好设置保存的数据较少,格式呢也较为简单。一般存储类似于配置信息格式的数据,是简单类型的key-value值存储,例如是否第一次登陆,是否打开音效之类信息。
用户偏好设置呢,有三种级别,区别在于:对象的得到方式不同,相应的控制域也不同,下面依次跟大家介绍:
1.用户级别的
SharedPreferences preferences=getSharedPreferences("fileName", MODE_PRIVATE);
以上代码得到的用户偏好设置的数据,会保存在一个名字叫做fileName.xml 的文件中。
2.界面级别的
SharedPreferences preferences=getPreferences(MODE_PRIVATE);
以上代码得到的用户偏好设置的数据,保存的文件名,是以当前的Activity的名字为名的。
3.全局系统级别的
SharedPreferences preferences=PreferenceManager.getDefaultSharedPreferences(context);
以上代码得到的用户偏好设置的数据,保存的文件名,是以当前程序所在的包名为名的。
ps.说一下文件的几种MODE格式意义
MODE_APPEND 可追加的
MODE_ENABLE_WRITE_AHEAD_LOGGING 启动之前写出日志
MODE_MULTI_PROCESS 解决数据一致性问题,解决于多任务问题
MODE_PRIVATE 私有的,仅允许本程序的读写操作
MODE_WORLD_READABLE 允许其它程序的读出操作
MODE_WORLD_WRITEABLE 允许其它程序的写入操作
在得到SharedPrefrences对象之后,通过其对象.edit() 方法得到Editor对象,然后调用其 clear put remove commit 等方法进行数据的提交操作
*** 读数据,直接用 SharedPrefrences对象 的 getString("名称",无返回值时的默认值);
*** 存入数据,调用 edit.putString("名称",值);
一定记得调用edit.commit(); 方法,将写入的值进行提交,否则会功亏一篑的。。。
二 文件存储
文件存储呢,根据程序运行对该文件存储内容的依赖性和信息数据的安全性,将文件存储分为内部存储和外部存储
1.内部存储(对手机上存储的文件进行读写)
利用Context提供的方法 openFileInput(文件名) openFileOutput(文件名,Mode) 利用前两个方法,直接得到输入输出流,从而进行对文件的读写
2.外部存储 (对手机外置内存卡上的文件进行读写)
首先,提供权限(读写删改外部储存设备文件的权限)
其次, 通过文件的输入输出流对文件进行操作
三 SQLite 数据库 (轻量级的一个数据库,可以看作是一个文件)
得到数据库对象,有两种方法
1.SQLiteDatabase的静态方法打开或者创建数据库,使用数据库对象的execSQL()方法,对数据库进行操作(推荐使用方法二,故方法一不做详解)
2.使用SQLiteOpenHelper类,来得到数据库对象,具体代码如下
SQLiteOpenHelper类的创建
package cn.xianxian.simplesqlite;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DBOpenHelp extends SQLiteOpenHelper {
public DBOpenHelp(Context context) {
//构造方法,第二个参数(Xianxian)数据库的名字,最后一个参数(1)版本号
super(context, "Xianxian", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
// 每次得到数据库对象的时候直接创建表
String sql="create table Student_info(id integer primary key,name varchar(12))";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 数据库更新时发生的事件
}
}
得到数据库对象
package cn.xianxian.simplesqlite;
import android.os.Bundle;
import android.app.Activity;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//得到数据库对象
SQLiteDatabase db=new DBOpenHelp(this).getReadableDatabase();
//添加一条数据进入数据库
ContentValues values=new ContentValues();
values.put("id", 1);
values.put("name","xian");
db.insert("Student_info", null, values);
}
}
四 使用网络存储数据(具体的我就不多说了,就是云端存储,以后会专门对这方面的内容进行详细的讲解)
啦啦,2015年的最后一天了呢,想想还是有一点点激动的说,嘿嘿~拍拍小娴娴,今年的表现还是不错的,学习的很认真,实习也找到了,好好表扬表扬哟~
2016呢,送给自己的话: 认真的过每一天,去努力,去学习。永远记得,你是怎样的,你的世界就是怎样的,小娴娴,加油加油~