android 数据存储有大体分为4种
1. 文件存储
2. sharedPreference
3. 数据库存储
4. SD卡
文件存储
文件存储是android 最基本的数据存储方式,它不对存储的内容进行任何格式化的处理,所有数据都原封不动的保存到文件中,因而它适合存储一些简单的文本数据或者二进制数据。
Context类中提供了
FileOutputStream openFileOutput (String name, int mode)
方法,可以将数据存储到指定文件中。
参数一:文件名(不包含路径)
所有文件的默认/data/data//files/
参数二:文件操作模式
MODE_PRIVATE(默认)同名文件覆盖
MODE_APPEND出现同名文件想后追加内容
其他模式在4.2之后废弃
SharedPerference存储
SharedPerference的使用pull解析来生成xml文件来存储信息。
所以SharedReference 是使用建值对的方式存储。而且SharedPeferece还支持不同的数据类型存储。比如你存储的是int型,取出来的也是in型
我们可以从三个地方来SharedPreferences
Context类中提供
abstract SharedPreferences getSharedPreferences(String name, int mode)
参数一:文件名
文件存在/data/data//shared_prefs/
参数二:文件操作模式
MODE_PRIVATE(默认)只有当前文件才可以对这个SharedPeference进行操作
其他模式已被陆续废弃Ativitiy类中也有一个
SharedPreferences getSharedPreferences(int mode)
会自动将当前类名最为SharedPeference文件名android.preference.PreferenceManager静态类中的
static SharedPreferences getDefaultSharedPreferences(Context context)
介绍一个Context 对象 自动用应用包名最为前缀来命名SharedPreferences文件
得到SharedPreferences对象可以向SharedPreferences文件存储数据了
- SharedPreferences对象的edit()方法来获取SharedPreferences.Editor对象
- SharedPreferences.Editor对象添加数据,比如添加一个boolean类型的变量就需要putBoolean,还有putString……
- 调用apply保持数据
使用SharedPreferences对象的get方法获取数据
SQLite
android 使用SQLiteOpenHelper对SQLite进行了封装,使其更加简单方便的管理数据库
存储目录
/data/data//database/
java.lang.Object
↳ android.database.sqlite.SQLiteOpenHelper
public abstract class SQLiteOpenHelper
extends Object
主要方法
abstract void onCreate(SQLiteDatabase db)
实现创建数据库的逻辑
abstract void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
更新数据库的逻辑
SQLiteDatabase getReadableDatabase()
创建一个或打开一个现有的数据库,并返回一个可以对数据库进行读写操作的对象(Java View技术),当数据库不可写的时候(磁盘满了),返回的对象将以只读方式来打开数据库
SQLiteDatabase getWritableDatabase()
创建一个或打开一个现有的数据库,并返回一个可以对数据库进行读写操作的对象(Java View技术),当数据库不可写的时候(磁盘满了),抛出异常
SQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version)
参数一:SQLite是所有程序都可以使用的,SQLite使用context划分数据属于哪个软件
参数二:数据库名字
参数三:允许我们在查询数据库时返回一个自定义的Cursor,y一般传入null
参数四:数据库版本号。可以更新数据库
SQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler)
构建数据库之后,调用getReadableDatabase,getWritableDatabase创建数据库了,此时重写的oncreate返回会执行。