数据持久化
Android持久化方式主要有三种:文件存储、SharePreference存储以及数据库存储。
文件储存
比较适合存储一些简单的文本数据以及二进制数据。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| @Override protected void onDestroy() { super.onDestroy(); String data = editText.getText().toString(); FileOutputStream out = null; BufferedWriter writer = null; try { //MODE_APPEND是往文件里附加数据,MODE_PRIVATE是覆盖之前的数据 out = openFileOutput("mydata", Context.MODE_APPEND); writer = new BufferedWriter(new OutputStreamWriter(out)); writer.write(data); writer.flush(); // Log.d("destory",out.) } catch (IOException e) { e.printStackTrace(); } finally { try { if (writer != null) { writer.close(); } } catch (IOException e) { e.printStackTrace(); } } }
|
查看保存的数据:http://t.csdn.cn/c4EkS
SharedPreferences存储
使用键值对进行储存。存入时是什么数据类型,取出就是什么数据类型。
1 2 3
| SharedPreferences.Editor edit = getSharedPreferences("mydata", MODE_PRIVATE).edit(); edit.putString("tempStr",str); edit.commit();
|
Sqlite
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| public class MyDatabaseHelper extends SQLiteOpenHelper { public static final String CREATE_BOOK = "create table mybooks (\n" + "id integer primary key autoincrement,\n" + "author text,\n" + "price real,\n" + "pages integer,\n" + "name text);";
private Context context; public MyDatabaseHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); this.context = context; }
@Override public void onCreate(SQLiteDatabase db) { db.beginTransaction(); db.execSQL(CREATE_BOOK); Toast.makeText(context,"Create Books Successed",Toast.LENGTH_SHORT).show(); }
// 当构造函数中的版本号更新之后就会调用本函数 @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }
|
1. 使用ContentValues插入
1 2 3 4 5 6 7 8
| db.beginTransaction(); // 手动设置开始事务 for (ContentValues v : list) { db.insert("bus_line_station", null, v); } db.setTransactionSuccessful(); // 设置事务处理成功,不设置会自动回滚不提交 db.endTransaction(); // 处理完成
db.close();
|