Android 五種儲存方式個人總結,android五種
一 . 檔案儲存體
FileOutputStream out = openFileOutput("data",Context.MODE_PRIVATE);
BufferedWriter writer = new BufferedWriter(new OutputStream(out));
String s ;
writer.writer(s);
二. sharePreferences 儲存 (索引值對形式)
方法 1. Context 類中的getSharedPreferences("檔案名稱字",操作模式) 方法
操作模式一般兩種 :
MODE_PRIVATE 只允許本進程使用
MODE_MULTI_PROCESS ('mʌltɪ)多的進程
方法 2. Activity類中的getSharedPreferences(操作模式) 方法
方法 3. PreferenceManager類中的getSharedPreferences()方法
寫: SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(context).edit();
editor.putString("key",value);
讀: SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.get("key","沒有值時候預設")
三. SQLite
1.首先要建立一SQLiteOpenHelper資料庫的輔助類,類中有a,b兩個方法
a. onCreate()用於建立表 ,如
Public void onCreate(SQLiteDatabase db){
db.execSQL(建立表語句)
}
b.onUpgrade()
2.建立一個開啟或現有的資料庫
SQLiteOpenHelper msh = new SQLiteOpenHelper(content或this,DB_name,null,Version版本);
SQLiteDatabase db = msh.getwritableDatabase()
3.添加資料
// ContentValue類似hashMap
ContentValues contentValues = new ContentValues();
contentValues.put("key",values);
db.insert("表名",條件或null,contentValues)
4.查詢資料
Cursor cursor = db.query("表名",null,null,null,null,null,null);
if(cursor.moToFirst()){
String data = cursor.getString(cursor.getColumnIndex("data"));
}while(cursor.moveToNext);
cursor.close();
5. 改正資料
db.update("表名",values,"data=?",new String[]{"new data"});
6.刪除資料
db.update("表名","pages>?",new String[]{"500"}); //刪除pages大於500的表
四. ContentProvide共用資料的儲存
注意 : 通過 Context 中的 getContentResolver()方法擷取到該類的執行個體, Uri對象來查詢表中的資料
Uri 可以是 ContactsContract.CommonDataKinds.Phone.CONTENT_URI(讀取連絡人的許可權)
1.內容 URI給內容提供器中的資料建立
了唯一識別碼,它主要由兩部分組成,許可權(authority)和路徑(path)
authority : 包名 + provider 比如 com.example.app.provider
path : 表名 比如table1
頭部加上協議聲明
URI 標準的格式寫法:content://com.example.app.provider/table1
Uri uri = Uri.parse("content://com.example.app.provider/table1")
2.建立資料
ContentValues values = new ContentValues();
values.put("column1", "text");
getContentResolver().insert(uri, values);
3.查詢資料
Cursor cursor = getContentResolver().query(uri,projection,selection,selectionArgs,sortOrder);
if (cursor != null) {
while (cursor.moveToNext()) {
String column1 = cursor.getString(cursor.getColumnIndex("column1"));
}
cursor.close();
}
4.修改資料
getContentResolver().update(uri, values, "column1 = ? and column2 = ?", newString[] {"text", "1"});
5.刪除資料
getContentResolver().delete(uri, "column1 = ?", new String[] { "1" });
四(2) 自訂ContentProvider
1. 自訂類繼承ContentProvider類,重新 onCreate() , query() , insert() ,update() , delete() , getType() 方法
自訂不用uri.parse(),但是首先要對比uri是否相等 uriMatcher.match(傳入的uri) ,其次getType()是根據uri相等,返回 Uri 對象所對應的 MIME類型 .
MIME類型的規定 :
1. 必須以 vnd 開頭。
2. 如果內容 URI 以路徑結尾,則後接 android.cursor.dir/,如果內容 URI 以 id 結尾,
則後接 android.cursor.item/。
3. 最後接上 vnd.<authority>.<path>。比如vnd.android.cursor.dir/vnd.com.example.app.provider.table1
vnd.android.cursor.item/vnd. com.example.app.provider.table1
2. manifest.xml 文中聲明
<provider
android:name = "比如com.example.databasetest.DatabaseProvider"
android:anthorities = "比如com.example.databasetest.provider"
/>
五.
通過網路的空間儲存資料,比如上傳檔案和下載檔案,有比如 使用者資料的上傳和下載核對