安卓学习笔记3_Android数据持久化
今天刚简单学习了安卓数据持久化, 现在梳理一下.
一:文件存储
安卓中的文件存储就是使用了Context类中提供的openFileOutput()
和openFileInput()
分别对应着文件的持久化以及反持久化.
其中,调用openFileOutPut()
方法返回一个FileOutputStream
对象,调用openFileInput()
会返回一个FileInputStream
对象. 这两个对象就是java IO的字节流输入, 输出对象.
我们通过安卓Contex类提供的这两种方法拿到这两对象之后,就和JAVA一样了,该干嘛干嘛就行.
二:SharedPreference存储
不同于文件存储的方式,SharedPreference是使用key-value的方式存储数据的.
1:如何获取SharedPreference对象
要想使用SharedPreference来存储数据,首先要获取SharedPreference对象, <第一行代码中>介绍了有三种方式获取到这个对象. 但是我今天实验的时候,发现第三种方法貌似已经不推荐使用了, 第二种获取SharedPreference对象的方式, 实际上通过阅读源码发现内部也是调用的第一种获取方式.
1:Context类中的getSharedPreferences()
方法
我也就不介绍了,凡是继承了Context类的子类,都可以直接调用这个方法.
该方法有两个参数,第一个参数用于指定SharedPreference文件的名称. 第二个参数用于指定操作模式.(但是暂时没啥用,只有一种模式,直接alt+/提示就行)
2:Activity类中的getPreferences()
方法.
在Activity中使用, 参数只有一个,就是指定操作模式.
之所以省略了指定SharedPreference文件名称的参数, 是因为它默认用当前Activity类名当做文件名称.
3:PreferenceManager类中的getDefaultSharedPreferences()
方法.
这是个静态方法,接收一个Context参数.
2:如何使用SharedPreference对象进行保存
就为了复习一下,直接写代码:
//方法2:使用Context类中的getSharedPreference()方法,
//实际上,通过阅读源码,可以知道方法1中最后也是调用的该方法
SharedPreferences sharedPreferences = getSharedPreferences("data", MODE_PRIVATE);
//调用SharedPreference对象的edit()方法,获的SharedPreference.Edit对象
SharedPreferences.Editor edit = sharedPreferences.edit();
//存数据
edit.putString("name", "zhangsan");
edit.putInt("age", 10);
edit.apply();
3:如何使用SharedPreference对象获取数据
SharedPreferences sharedPreferences = getSharedPreferences("data", MODE_PRIVATE);
//取数据
String name = sharedPreferences.getString("name", "");
int age = sharedPreferences.getInt("age", -1);
三:SQLite数据库存储
1:创建数据库
我们要自己写一个类,继承SQLiteOpenHelper抽象类. 并实现它的 onCreate()
和onUpgrade()
方法. 前者是初始化方法, 后者是用来升级数据库的.
还要实现构造方法,构造方法就重写4个参数的.
然后我们实例化刚刚继承了SQLiteOpenHelper类的自定义类, 通过SQLiteOpenHelper自己的实例方法
getReadableDatabase()
或者getWritableDatabse()
方法获得数据库对象(有就直接返回, 没有就创建). 这两个方法看名字就知道差别了.
2:数据库的使用
就使用原生sql,超级方便. 懒得学了.
使用刚刚的继承了SQLiteOpenHelper类的自定义类, 通过getReadableDatabase
或者getWritableDatabse()
方法获取数据库对象之后, 就可以开始CRUD了.
增删改的时候,使用数据库对象db.excuteSQL(类sql语言)
; 查询的时候使用数据库对象db.rawQuery("查询的sql", null)
(生查)