一.数据存储
| Context.getSharedPreferences(Stirng name,int mode)获取指定的SharedPreferences实例
| 方法第二个参数提供如下几个值
| Context.MODE_PRIVATE 指定SharedPreference数据只能被本程序读写
| Context.MODE_WORLD_READABLE 指定SharedPreference数据能被其他程序读,但不能写
| Context.MODE_WORLD_WRITEABLE 指定SharedPreference数据能被其他程序读写
| SharedPreferences 保存数据主要是类似于配置信息格式的数据, 即简单的key-value 对;
| boolean contains(String key) 判断SharedPreferences中是否包括特定key的数据
| abstract Map<String,?>getAll() 获取SharedPreferences数据里全部的key-value对
| boolean getXxx(Stirng key,Xxx value) 获取SharedPreferences里指定key对应的value,其中Xxx可以是boolean,int,float等各种基本类型的值
| SharedPreferences.Editor 数据写入
| SharedPreferences.Editor clear() 清空SharedPreferences;里的所有数据
| SharedPreferences.Editor putXxx(Stirng key,Xxx value) 向SharedPreferences中存入指定的key-value数据
| SharedPreferences.Editor remove(String key) 删除SharedPreferences里指定的key对应的数据项
| boolean commit() 当Editor编辑完成后,调用该方法提交修改
二.File存储
| FileInputStream openFileInput(String name) 打开应用程序的数据文件夹下的name文件对应的文件输入流
| FileOutputStream openFileOutput(String name,int mode) 打开应用程序的数据文件夹下的name文件对应的文件输出流
| MODE_PRIVATE 该文件只能被当前程序读写
| MODE_APPEND 以追加的方式打开该文件,应用程序可以向改文件中追加内容
| MODE_WORLD_READABLE 该文件的内容可以被其他程序读取
| MODE_WORLD_WRITEABLE 该文件的内容可由其他程序读写
| getDir(Stirng name,int mode) 在应用程序的数据文件夹下创建或获取name对应的子目录
| File getFilesDir()获取该应用程序数据文件夹的绝对路径
| String[] fileList() 返回应用程序的数据文件夹下的所有文件
| deleteFile(String str) 删除应用程序的数据文件夹下的指定文件
三.读写SD卡上的文件
| Environment的getExternalStorageState()方法判断手机上是否插入SD卡,并且应用程序具有读写SD卡的权限
| Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)返回true, 手机已插入SD卡且程序具有读写SD卡的权限
| Environment的Environment的getExternalStorageDirectory() 获取外部存储器(SD卡)的目录
四.SQLite数据库
| SQLiteDatabase 代表一个数据库,类似于JDBC的Connection接口
| static SQLiteDatabase openDatabase(String path,SQLiteDatabase.CursorFactory factory,int flags) 打开path文件所代表的SQLite数据库
| static SQLiteDatabase openOnCreateDatabase(File file,SQLiteDatabase.CursorFactory factory) 打开或创建file所代表的SQLite数据库
| static SQLiteDatabase openOnCreateDatabase(String path,SQLiteDatabase.CursorFactory factory)打开或创建path文件所代表的SQLite数据库
| SQLiteDatabase.openOnCreateDatabase("/mnt/db/temp.db3",null) null使用默认工厂
| execSQL(String sql,Object[] bindArgs) 执行带占位符的sql
| db.exexSQL("insert into news_inf values(null,?,?)",new String[]{title,content});
| execSQL(String sql) 执行sql
| insert(String table,String nullColumnHack,ContentValues values) 想指定表中插入特定数据
| update(String table,ContentValues values,String whereClause,String[] whereArgs) 更新指定表中的特定数据
| delete(String table,,String whereClause,String[] whereArgs) 删除指定表中的特定数据
| Cursor query(String table,Sring[] columns,String whereClause,String[] whereArgs,String groupBy,String having,String orderBy,String limit)对执行数据表执行 查询,limit控制最多查询几条记录
| Cursor query(boolean distinct,String table,Sring[] columns,String whereClause,String[] whereArgs,String groupBy,String having,String orderBy,String limit) 对指定表执行查询语句,其中第一个参数控制是否去除重复值
| rawQuery(String sql,String[] seletctionArgs) 执行带占位符的sql查询
| beginTransaction() 开始事务
| inTransaction() 上下文处于事物当中返回true
| endTransaction() 结束事务
| SQLiteOpenHelper 管理数据库工具类
| synchronized SQLiteDatabase getReadableDatabase() 以读写的方式打开数据库对应的SQLiteDatabase对象
| synchronized SQLiteDatabase getWritableDatabase() 以写的方式打开数据库对应的SQLiteDatabase对象
| abstract void onCreate(SQLiteDatabase db) 当第一次创建数据库时回调该方法
| abstract void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) 当数据库版本更新时回调该方法
| synchronized void close() 关闭所有打开的SQLiteDatabase
| Cursor 返回结果集对象 类似于JDBC的ResultSet
| move(int offset) 将记录指针向上或向下移动指定的行数,整数向下移动,负数向上移动
| boolean moveToFirst() 将记录指针移动到第一行,成功返回true
| boolean moveToLast() 将记录指针移动到最后一行,如果成功返回true
| boolean moveToNext() 将记录指针移动到下一行,如果移动成功返回true
| boolean moveToPosition(int position) 将记录指针移动到指定行,如果成功返回true
| boolean moveToPrevious() 将记录指针移动到上一行,如果移动成功返回true
五.数据共享
| ContentProvider
| 方法
| public boolean onCreate() 该方法在ContentProvider创建后被回调
| public Uri insert(Uri uri ContentValues values) 根据该Uri插入values对应的数据
| public int delete(Uri uri,String selection,String[] selectionArgs) 根据Uri删除select条件所匹配的全部记录
| public int udpate(Uri uri,ContentValues values,String selection,String[] selectionArgs) 根据Uri修改select匹配的全部记录
| public Cursor query(Uri uri,String[] projection,String selection,String[] selectionArgs,String sortOrder) 根据Uri查询select匹配的所有记录, projection就是一个列表列名,表明只选择出指定的数据列
| public String getType(Uri uri) 返回Uri所代表的MIME类型
| 监听
| ContentObserver
| getContext().getContentResolver().notifyChange(uri,null);通知所有注册在该uri的监听者ContentProvider数据发送改变
| ContentResolver(获取ContentResolver对象: Context.getContentResolver())
| insert(Uri uri,ContentValues values) 向Uri对应的ContentProvider插入values对应的数据
| delete(Uri uri,String where,String[] selectionArgs) 向Uri对应的ContentProvider中where提交匹配的数据
| update(Uri uri,ContentValues values,String where,String selectionArgs) 更新Uri对应的ContentProvider中where提交匹配的数据
| query(Uri uri,String[] projection,String selection,String[] selectionArgs,String sortOrder) 查询Uri对应的ContentProvider中where提交匹配的数据
| registerContentObserver(Uri uri,boolean notifyForDescendents,ContentObserver observer) 注册监听器
| Uri:content://org.crazy.java/world
| 分解
| content:// 头
| org.crazy.java
| world 资源部分
| UirMatcher 工具类
| void addURI(String authority,Stirng path,int code) 向UirMatcher对象注册uri其中authority,path组成Uri,code表示该Uri的标识码
| int match(Uri uri) 根据前面注册的uri来判断指定的uri的标识码,如果找不到返回-1
| ContentUris 工具类
| withAppendedId(Uri id) 用于为路径加上id部分
| Uri uri = Uri.parse("content://org.crazy.java/word");
Uri res = ContentUris.withAppendedId(uri,2)
=>content://org.crazy.java/word/2
| paseId(uri) 用于从指定的Uri中解析出ID标识码
| Context.getSharedPreferences(Stirng name,int mode)获取指定的SharedPreferences实例
| 方法第二个参数提供如下几个值
| Context.MODE_PRIVATE 指定SharedPreference数据只能被本程序读写
| Context.MODE_WORLD_READABLE 指定SharedPreference数据能被其他程序读,但不能写
| Context.MODE_WORLD_WRITEABLE 指定SharedPreference数据能被其他程序读写
| SharedPreferences 保存数据主要是类似于配置信息格式的数据, 即简单的key-value 对;
| boolean contains(String key) 判断SharedPreferences中是否包括特定key的数据
| abstract Map<String,?>getAll() 获取SharedPreferences数据里全部的key-value对
| boolean getXxx(Stirng key,Xxx value) 获取SharedPreferences里指定key对应的value,其中Xxx可以是boolean,int,float等各种基本类型的值
| SharedPreferences.Editor 数据写入
| SharedPreferences.Editor clear() 清空SharedPreferences;里的所有数据
| SharedPreferences.Editor putXxx(Stirng key,Xxx value) 向SharedPreferences中存入指定的key-value数据
| SharedPreferences.Editor remove(String key) 删除SharedPreferences里指定的key对应的数据项
| boolean commit() 当Editor编辑完成后,调用该方法提交修改
二.File存储
| FileInputStream openFileInput(String name) 打开应用程序的数据文件夹下的name文件对应的文件输入流
| FileOutputStream openFileOutput(String name,int mode) 打开应用程序的数据文件夹下的name文件对应的文件输出流
| MODE_PRIVATE 该文件只能被当前程序读写
| MODE_APPEND 以追加的方式打开该文件,应用程序可以向改文件中追加内容
| MODE_WORLD_READABLE 该文件的内容可以被其他程序读取
| MODE_WORLD_WRITEABLE 该文件的内容可由其他程序读写
| getDir(Stirng name,int mode) 在应用程序的数据文件夹下创建或获取name对应的子目录
| File getFilesDir()获取该应用程序数据文件夹的绝对路径
| String[] fileList() 返回应用程序的数据文件夹下的所有文件
| deleteFile(String str) 删除应用程序的数据文件夹下的指定文件
三.读写SD卡上的文件
| Environment的getExternalStorageState()方法判断手机上是否插入SD卡,并且应用程序具有读写SD卡的权限
| Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)返回true, 手机已插入SD卡且程序具有读写SD卡的权限
| Environment的Environment的getExternalStorageDirectory() 获取外部存储器(SD卡)的目录
四.SQLite数据库
| SQLiteDatabase 代表一个数据库,类似于JDBC的Connection接口
| static SQLiteDatabase openDatabase(String path,SQLiteDatabase.CursorFactory factory,int flags) 打开path文件所代表的SQLite数据库
| static SQLiteDatabase openOnCreateDatabase(File file,SQLiteDatabase.CursorFactory factory) 打开或创建file所代表的SQLite数据库
| static SQLiteDatabase openOnCreateDatabase(String path,SQLiteDatabase.CursorFactory factory)打开或创建path文件所代表的SQLite数据库
| SQLiteDatabase.openOnCreateDatabase("/mnt/db/temp.db3",null) null使用默认工厂
| execSQL(String sql,Object[] bindArgs) 执行带占位符的sql
| db.exexSQL("insert into news_inf values(null,?,?)",new String[]{title,content});
| execSQL(String sql) 执行sql
| insert(String table,String nullColumnHack,ContentValues values) 想指定表中插入特定数据
| update(String table,ContentValues values,String whereClause,String[] whereArgs) 更新指定表中的特定数据
| delete(String table,,String whereClause,String[] whereArgs) 删除指定表中的特定数据
| Cursor query(String table,Sring[] columns,String whereClause,String[] whereArgs,String groupBy,String having,String orderBy,String limit)对执行数据表执行 查询,limit控制最多查询几条记录
| Cursor query(boolean distinct,String table,Sring[] columns,String whereClause,String[] whereArgs,String groupBy,String having,String orderBy,String limit) 对指定表执行查询语句,其中第一个参数控制是否去除重复值
| rawQuery(String sql,String[] seletctionArgs) 执行带占位符的sql查询
| beginTransaction() 开始事务
| inTransaction() 上下文处于事物当中返回true
| endTransaction() 结束事务
| SQLiteOpenHelper 管理数据库工具类
| synchronized SQLiteDatabase getReadableDatabase() 以读写的方式打开数据库对应的SQLiteDatabase对象
| synchronized SQLiteDatabase getWritableDatabase() 以写的方式打开数据库对应的SQLiteDatabase对象
| abstract void onCreate(SQLiteDatabase db) 当第一次创建数据库时回调该方法
| abstract void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) 当数据库版本更新时回调该方法
| synchronized void close() 关闭所有打开的SQLiteDatabase
| Cursor 返回结果集对象 类似于JDBC的ResultSet
| move(int offset) 将记录指针向上或向下移动指定的行数,整数向下移动,负数向上移动
| boolean moveToFirst() 将记录指针移动到第一行,成功返回true
| boolean moveToLast() 将记录指针移动到最后一行,如果成功返回true
| boolean moveToNext() 将记录指针移动到下一行,如果移动成功返回true
| boolean moveToPosition(int position) 将记录指针移动到指定行,如果成功返回true
| boolean moveToPrevious() 将记录指针移动到上一行,如果移动成功返回true
五.数据共享
| ContentProvider
| 方法
| public boolean onCreate() 该方法在ContentProvider创建后被回调
| public Uri insert(Uri uri ContentValues values) 根据该Uri插入values对应的数据
| public int delete(Uri uri,String selection,String[] selectionArgs) 根据Uri删除select条件所匹配的全部记录
| public int udpate(Uri uri,ContentValues values,String selection,String[] selectionArgs) 根据Uri修改select匹配的全部记录
| public Cursor query(Uri uri,String[] projection,String selection,String[] selectionArgs,String sortOrder) 根据Uri查询select匹配的所有记录, projection就是一个列表列名,表明只选择出指定的数据列
| public String getType(Uri uri) 返回Uri所代表的MIME类型
| 监听
| ContentObserver
| getContext().getContentResolver().notifyChange(uri,null);通知所有注册在该uri的监听者ContentProvider数据发送改变
| ContentResolver(获取ContentResolver对象: Context.getContentResolver())
| insert(Uri uri,ContentValues values) 向Uri对应的ContentProvider插入values对应的数据
| delete(Uri uri,String where,String[] selectionArgs) 向Uri对应的ContentProvider中where提交匹配的数据
| update(Uri uri,ContentValues values,String where,String selectionArgs) 更新Uri对应的ContentProvider中where提交匹配的数据
| query(Uri uri,String[] projection,String selection,String[] selectionArgs,String sortOrder) 查询Uri对应的ContentProvider中where提交匹配的数据
| registerContentObserver(Uri uri,boolean notifyForDescendents,ContentObserver observer) 注册监听器
| Uri:content://org.crazy.java/world
| 分解
| content:// 头
| org.crazy.java
| world 资源部分
| UirMatcher 工具类
| void addURI(String authority,Stirng path,int code) 向UirMatcher对象注册uri其中authority,path组成Uri,code表示该Uri的标识码
| int match(Uri uri) 根据前面注册的uri来判断指定的uri的标识码,如果找不到返回-1
| ContentUris 工具类
| withAppendedId(Uri id) 用于为路径加上id部分
| Uri uri = Uri.parse("content://org.crazy.java/word");
Uri res = ContentUris.withAppendedId(uri,2)
=>content://org.crazy.java/word/2
| paseId(uri) 用于从指定的Uri中解析出ID标识码