Android 五大存储:
一、SharedPreferences 方式:
SharedPreferences 是使用键值对的方式进行存储数据的。
想要使用SharedPreferences 来存储数据,首先主要获取到SharedPreferences 对象。Android提供了三种方法用于获取SharedPreferences对象:
1、Context类中的getSharedPreferences()方法
//此方法接收两个参数,一个参数用于指定SharedPreferences文件的名称,如果指定的文件不存在则会创建一个,
//SharedPreferences文件都是存放在/data/data/<package name>/shared_prefs/目录下 //第二个参数用于指定操作模式,目前只有MODE_PRIVATE这种模式,和直接传入0效果相同 SharedPreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).edit(); editor.putString("name", "Tom"); editor.putInt("age",13); editor.putBoolean("married",false); editor.apply();
2、Activity类中的getPreferences()方法
这个方法和Context中的getSharedPreferences()方法很类似,不过它只接收一个操作模式,因为使用这个方法时会自动将当前活动的类名作为SharedPreferences的文件名
3、PreferencesManager类中的getDefaultSharedPreferences()方法
这是一个静态方法,它接收一个Context参数,并自动使用当前应用程序的包名作为前缀来命名SharedPreferences文件。
得到了SharedPreferences对象后, 就可以开始想SharedPreferences文件中存储数据了,主要可以分为三步:
(1)调用SharedPreferences对象的edit()方法来获取一个SharedPreferences.Editor对象
(2)向SharedPreferences.Editor 对象中添加数据,比如添加一个布尔值,可以使用putBoolean() 方法
(3)调用apply()方法的添加的数据提交,从而完成数据存储操作 。
SharedPreferences中读取数据:
SharedPreferences pref = getSharedPreferences("data",MODE_PRIVATE ); String name = pref.getString("name",""); int age = pref.getInt("age",0); boolean married = pref.getBoolean("married", false);
二、SQLite介绍
SQLite是一款非常流行的嵌入式数据库,它支持SQL操作,并且只用很少的内存,支持的数据类型:integer 整形;real 浮点型;text 文本类型; blob 二进制类型;
1、SQLiteOpenHelper中的方法
创建一个类继承继承自SQLiteOpenHelper,实现onCreate和onUpgrade方法构造方法。
public class MySQLite extends SQLiteOpenHelper{ public MySQLite(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { //第一个参数就是调用此类的上下文,第二个参数就是创建数据库的文件目录,第三个参数是系统创建CursorFactory, //第一行代码里说这个参数允许我们在查询数据的时候返回一个自定义的Cursor,一般传入null //最后一个参数是版本号 super(context, name, factory, version); } @Override public void onCreate(SQLiteDatabase db) { //初始化数据库,主要建立数据库中的表 } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //如果数据库中有数据修改,当newVersion版本号变得时候,就会调用这个方法 }
2. 执行数据库中表的创建,
在onCreate方法中执行创建数据库表的SQL语句
@Override public void onCreate(SQLiteDatabase db) { db.execSQL("create table text_db(_id integer primary key autoincrement," + "name varchar(20)," + "age integer," + "gender varchar(2))"); }
这个方法只能执行一次,只有在数据库第一次创建的时候才会执行。