6 數(shù)據(jù)存儲(chǔ)與共享_第1頁(yè)
6 數(shù)據(jù)存儲(chǔ)與共享_第2頁(yè)
6 數(shù)據(jù)存儲(chǔ)與共享_第3頁(yè)
6 數(shù)據(jù)存儲(chǔ)與共享_第4頁(yè)
6 數(shù)據(jù)存儲(chǔ)與共享_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Google Android數(shù)據(jù)存儲(chǔ)與共享數(shù)據(jù)存儲(chǔ)與共享on android本章內(nèi)容本章內(nèi)容n首選項(xiàng)信息首選項(xiàng)信息私有數(shù)據(jù)存儲(chǔ)私有數(shù)據(jù)存儲(chǔ)公有數(shù)據(jù)存儲(chǔ)與共享公有數(shù)據(jù)存儲(chǔ)與共享n數(shù)據(jù)文件數(shù)據(jù)文件內(nèi)存數(shù)據(jù)文件內(nèi)存數(shù)據(jù)文件SD卡數(shù)據(jù)文件卡數(shù)據(jù)文件nSQLite數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)SQLite基本操作基本操作SQLiteOpenHelpernContent Provider使用使用Content Provider發(fā)布數(shù)據(jù)發(fā)布數(shù)據(jù)使用使用Content Resolver獲取數(shù)據(jù)獲取數(shù)據(jù)數(shù)據(jù)存取方式數(shù)據(jù)存取方式n首選項(xiàng)信息首選項(xiàng)信息Preference鍵鍵-值值方式存儲(chǔ),以方式存儲(chǔ),以xml文件的形式保存文件的形

2、式保存n數(shù)據(jù)文件數(shù)據(jù)文件File采用采用java.io.*庫(kù)所提供庫(kù)所提供I/O接口讀寫文件接口讀寫文件n數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)SQLite SQLite是輕量級(jí)的嵌入式數(shù)據(jù)庫(kù)引擎是輕量級(jí)的嵌入式數(shù)據(jù)庫(kù)引擎nContent Provider用于實(shí)現(xiàn)不同應(yīng)用程序之間的數(shù)據(jù)共享用于實(shí)現(xiàn)不同應(yīng)用程序之間的數(shù)據(jù)共享(系統(tǒng)系統(tǒng))首選項(xiàng)信息首選項(xiàng)信息n什么是首選項(xiàng)?什么是首選項(xiàng)?可定制的設(shè)置選項(xiàng)或菜單可定制的設(shè)置選項(xiàng)或菜單程序的界面風(fēng)格、操作習(xí)慣、常用列表等數(shù)據(jù)信息程序的界面風(fēng)格、操作習(xí)慣、常用列表等數(shù)據(jù)信息首選項(xiàng)鍵值對(duì)形式存儲(chǔ)首選項(xiàng)鍵值對(duì)形式存儲(chǔ)XML文件文件應(yīng)用程序中可以通過(guò)指定不同的應(yīng)用程序中可以通過(guò)指定不同

3、的XML文件名來(lái)創(chuàng)建多個(gè)文件名來(lái)創(chuàng)建多個(gè)首選項(xiàng)信息數(shù)據(jù)文件首選項(xiàng)信息數(shù)據(jù)文件SharedPreferences類類首選項(xiàng)信息首選項(xiàng)信息n首選項(xiàng)信息的保護(hù)和公開模式首選項(xiàng)信息的保護(hù)和公開模式MODE_PRIVATE:私有模式:私有模式MODE_WORLD_READABLE:全局可讀模式:全局可讀模式MODE_WORLD_WRITEABLE:全局可寫模式:全局可寫模式(無(wú)效無(wú)效)首選項(xiàng)信息:私有數(shù)據(jù)存儲(chǔ)首選項(xiàng)信息:私有數(shù)據(jù)存儲(chǔ)nSharedPreferences獲取獲取public SharedPreferences getSharedPreferences(String name, int mo

4、de)例:例:SharedPreferences sp = getSharedPreferences(myShare, MODE_PRIVATE);首選項(xiàng)信息:私有數(shù)據(jù)存儲(chǔ)首選項(xiàng)信息:私有數(shù)據(jù)存儲(chǔ)nSharedPreferences提供的方法提供的方法boolean getBoolean(String key, boolean defValue)float getFloat(String key, float defValue)int getInt(String key, int defValue)long getLong(String key, long defValue)String ge

5、tString(String key, String defValue)首選項(xiàng)信息:私有數(shù)據(jù)存儲(chǔ)首選項(xiàng)信息:私有數(shù)據(jù)存儲(chǔ)nSharedPreferences.EditorSharedPreferences對(duì)象只提供對(duì)象只提供讀取讀取數(shù)據(jù)的方法,不能數(shù)據(jù)的方法,不能進(jìn)行數(shù)據(jù)的存儲(chǔ)和修改操作。這些操作需要通過(guò)進(jìn)行數(shù)據(jù)的存儲(chǔ)和修改操作。這些操作需要通過(guò)SharedPreferences類的嵌套類類的嵌套類SharedPreferences.Editor類所提供的方法來(lái)實(shí)現(xiàn)類所提供的方法來(lái)實(shí)現(xiàn)SharedPreferences.Editor獲取獲取Editor editor = sp.edit();首

6、選項(xiàng)信息:私有數(shù)據(jù)存儲(chǔ)首選項(xiàng)信息:私有數(shù)據(jù)存儲(chǔ)nSharedPreferences.Editor提供的方法提供的方法putBoolean(String key, boolean value)putFloat(String key, float value)putInt(String key, int value)putLong(String key, long value)putString(String key, String value)remove(String key)commit()contains(String key)首選項(xiàng)信息:公有數(shù)據(jù)存儲(chǔ)與共享首選項(xiàng)信息:公有數(shù)據(jù)存儲(chǔ)與共享n

7、實(shí)現(xiàn)過(guò)程實(shí)現(xiàn)過(guò)程應(yīng)用應(yīng)用1創(chuàng)建首選項(xiàng)模式為創(chuàng)建首選項(xiàng)模式為:MODE_WORLD_READABLEMODE_WORLD_WRITEABLE應(yīng)用應(yīng)用2獲取上下文環(huán)境獲取上下文環(huán)境(共享首選項(xiàng)在包內(nèi)共享首選項(xiàng)在包內(nèi))Context context = createPackageContext(com.example.sp, Context.CONTEXT_IGNORE_ SECURITY);SharedPreferences sp = context.getSharedPreferences(SPShare, MODE_WORLD_READABLE);.首選項(xiàng)信息:實(shí)例首選項(xiàng)信息:實(shí)例n實(shí)例實(shí)例數(shù)

8、據(jù)位于手機(jī)目錄下:數(shù)據(jù)位于手機(jī)目錄下:/data/data/shared_prefs數(shù)據(jù)文件數(shù)據(jù)文件n數(shù)據(jù)文件特點(diǎn)數(shù)據(jù)文件特點(diǎn)首選項(xiàng)信息只能以鍵值對(duì)的形式首選項(xiàng)信息只能以鍵值對(duì)的形式保存特定格式數(shù)據(jù)保存特定格式數(shù)據(jù)FileInputStreamFileOutputStreamopenFileInput()openFileOutput()數(shù)據(jù)文件數(shù)據(jù)文件nContext類提供方法類提供方法FileInputStream openFileInput(String name) throws FileNotFoundException FileOutputStream openFileOutput(S

9、tring name,int mode) throws FileNotFoundExceptionmode為文件操作模式,值為整數(shù)類型的常量:為文件操作模式,值為整數(shù)類型的常量:MODE_PRIVATE:默認(rèn)輸出模式:默認(rèn)輸出模式MODE_APPEND:追加模式:追加模式MODE_WORLD_READABLE:全局只讀模式:全局只讀模式MODE_WORLD_WRITEABLE:全局只寫模式:全局只寫模式MODE_WORLD_READABLE+MODE_WORLD_WRITEABLE:全局讀寫:全局讀寫模式模式 數(shù)據(jù)文件數(shù)據(jù)文件nContext類提供方法類提供方法deleteFile():刪除文

10、件:刪除文件getDir():創(chuàng)建:創(chuàng)建/獲取一個(gè)文件目錄獲取一個(gè)文件目錄fileList():列出本應(yīng)用程序創(chuàng)建的所有文件:列出本應(yīng)用程序創(chuàng)建的所有文件getFileDir():獲取已創(chuàng)建文件的路徑:獲取已創(chuàng)建文件的路徑數(shù)據(jù)文件:內(nèi)存數(shù)據(jù)文件數(shù)據(jù)文件:內(nèi)存數(shù)據(jù)文件n內(nèi)存數(shù)據(jù)文件特點(diǎn)內(nèi)存數(shù)據(jù)文件特點(diǎn)存放少量數(shù)據(jù)存放少量數(shù)據(jù)應(yīng)用程序卸載時(shí)其內(nèi)存中所關(guān)聯(lián)的數(shù)據(jù)文件也被刪除應(yīng)用程序卸載時(shí)其內(nèi)存中所關(guān)聯(lián)的數(shù)據(jù)文件也被刪除由程序創(chuàng)建的數(shù)據(jù)文件通常被保存在由程序創(chuàng)建的數(shù)據(jù)文件通常被保存在/data/data/files目錄下目錄下數(shù)據(jù)文件:內(nèi)存數(shù)據(jù)文件數(shù)據(jù)文件:內(nèi)存數(shù)據(jù)文件n實(shí)例實(shí)例 數(shù)據(jù)文件:數(shù)據(jù)文件:

11、SD卡數(shù)據(jù)文件卡數(shù)據(jù)文件nSD卡數(shù)據(jù)文件特點(diǎn)卡數(shù)據(jù)文件特點(diǎn)大量數(shù)據(jù)大量數(shù)據(jù)在程序中編寫檢查在程序中編寫檢查SD卡是否可用的程序卡是否可用的程序需申明對(duì)需申明對(duì)SD卡(外部存儲(chǔ)空間)的使用權(quán)限卡(外部存儲(chǔ)空間)的使用權(quán)限數(shù)據(jù)文件:數(shù)據(jù)文件:SD卡數(shù)據(jù)文件卡數(shù)據(jù)文件nSD卡數(shù)據(jù)文件常用操作卡數(shù)據(jù)文件常用操作判斷判斷SD是否存在是否存在 獲得獲得SD卡路徑卡路徑 例例Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)File sdCardDir = Environment.getExternalStorage

12、Directory();SQLite數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)nSQLite概述概述SQLite是一種輕量級(jí)的基于文件的數(shù)據(jù)庫(kù)管理系統(tǒng)是一種輕量級(jí)的基于文件的數(shù)據(jù)庫(kù)管理系統(tǒng)由由C語(yǔ)言編寫,實(shí)現(xiàn)了標(biāo)準(zhǔn)語(yǔ)言編寫,實(shí)現(xiàn)了標(biāo)準(zhǔn)SQL中的中的CRUD操作操作SQLite小巧、高效,適用于手機(jī)等嵌入式設(shè)備中小巧、高效,適用于手機(jī)等嵌入式設(shè)備中SQLite內(nèi)部支持以下幾種數(shù)據(jù)類型:內(nèi)部支持以下幾種數(shù)據(jù)類型:NULL:空值:空值INTEGER:有符號(hào)整數(shù):有符號(hào)整數(shù)REAL:浮點(diǎn)數(shù):浮點(diǎn)數(shù)TEXT:文本字符串:文本字符串BLOB:二進(jìn)制字節(jié)數(shù)據(jù):二進(jìn)制字節(jié)數(shù)據(jù)SQLite數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)nSQLiteDatabase方法方法p

13、ublic static SQLiteDatabase openOrCreateDatabase(String path, SQLiteDatabase.CursorFactory factory)打開打開/創(chuàng)建數(shù)據(jù)庫(kù),參數(shù)一為數(shù)據(jù)庫(kù)文件路徑,參數(shù)二可為創(chuàng)建數(shù)據(jù)庫(kù),參數(shù)一為數(shù)據(jù)庫(kù)文件路徑,參數(shù)二可為nullpublic void execSQL(String sql)public Cursor rawQuery(String sql, String selectionArgs)boolean moveToNext()/moveToPrevious()/moveToFirst()boolean

14、isFirst()/isLast()int getCount()int getXXX(in tcolumnIndex)SQLite數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)nSQLite基本操作實(shí)例基本操作實(shí)例數(shù)據(jù)庫(kù)文件保存在目錄數(shù)據(jù)庫(kù)文件保存在目錄/data/data/files/stu.db3實(shí)例:實(shí)例:SQLite1(帶(帶provider發(fā)布數(shù)據(jù))發(fā)布數(shù)據(jù))SQLite數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)nSQLiteOpenHelper提供方法輔助創(chuàng)建和打開數(shù)據(jù)庫(kù),管理數(shù)據(jù)庫(kù)不同版本提供方法輔助創(chuàng)建和打開數(shù)據(jù)庫(kù),管理數(shù)據(jù)庫(kù)不同版本使用時(shí)需要?jiǎng)?chuàng)建一個(gè)類,繼承類使用時(shí)需要?jiǎng)?chuàng)建一個(gè)類,繼承類SQLiteOpenHelper重寫其相對(duì)應(yīng)的方法來(lái)

15、實(shí)現(xiàn)創(chuàng)建、打開、更新數(shù)據(jù)庫(kù)的重寫其相對(duì)應(yīng)的方法來(lái)實(shí)現(xiàn)創(chuàng)建、打開、更新數(shù)據(jù)庫(kù)的操作操作常用方法如下常用方法如下void onCreate(SQLiteDatabase db)void onOpen(SQLiteDatabase db)void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)SQLiteDatabase getWritableDatabase()SQLiteDatabase getReadableDatabase()SQLite數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)nSQLiteOpenHelperMVC思想思想使用分層思想設(shè)計(jì)數(shù)據(jù)模

16、塊使用分層思想設(shè)計(jì)數(shù)據(jù)模塊n實(shí)例:實(shí)例:SQLite2SQLiteContent Providern概念概念跨應(yīng)用程序數(shù)據(jù)共享的方式跨應(yīng)用程序數(shù)據(jù)共享的方式應(yīng)用可通過(guò)應(yīng)用可通過(guò)Content Provider發(fā)布數(shù)據(jù),但不會(huì)泄發(fā)布數(shù)據(jù),但不會(huì)泄露數(shù)據(jù)在其應(yīng)用程序內(nèi)部的組織和存儲(chǔ)方式露數(shù)據(jù)在其應(yīng)用程序內(nèi)部的組織和存儲(chǔ)方式其他應(yīng)用可通過(guò)其他應(yīng)用可通過(guò)Content Resolver來(lái)獲取某個(gè)應(yīng)用來(lái)獲取某個(gè)應(yīng)用發(fā)布出來(lái)的共享數(shù)據(jù)發(fā)布出來(lái)的共享數(shù)據(jù)通信錄、通話記錄、短信記錄、相片庫(kù)、鈴聲庫(kù)等系統(tǒng)通信錄、通話記錄、短信記錄、相片庫(kù)、鈴聲庫(kù)等系統(tǒng)應(yīng)用程序也是通過(guò)應(yīng)用程序也是通過(guò)Content Provid

17、er來(lái)共享自己的來(lái)共享自己的數(shù)據(jù)數(shù)據(jù)Content Providernuri是是Content Provider提供的訪問數(shù)據(jù)的標(biāo)簽提供的訪問數(shù)據(jù)的標(biāo)簽A:標(biāo)準(zhǔn)前綴,用來(lái)說(shuō)明這是一個(gè):標(biāo)準(zhǔn)前綴,用來(lái)說(shuō)明這是一個(gè)Content Provider控制的數(shù)據(jù)控制的數(shù)據(jù)B:URI的標(biāo)識(shí),該標(biāo)識(shí)定義了這是哪個(gè)的標(biāo)識(shí),該標(biāo)識(shí)定義了這是哪個(gè)Content Provider提供的數(shù)據(jù)提供的數(shù)據(jù)C:路徑,:路徑,URI中可能不包括路徑,也可能包括一個(gè)或中可能不包括路徑,也可能包括一個(gè)或多個(gè)多個(gè)D:需要獲取的記錄的:需要獲取的記錄的ID;如果沒有該;如果沒有該ID,就表示返回,就表示返回全部數(shù)據(jù)全部數(shù)據(jù)conte

18、nt:/com.example.sqlite1.StuProviderContent Providern使用使用Content Provider發(fā)布數(shù)據(jù)發(fā)布數(shù)據(jù)Content Provider提供的數(shù)據(jù)以類似于數(shù)據(jù)庫(kù)表的提供的數(shù)據(jù)以類似于數(shù)據(jù)庫(kù)表的二維結(jié)構(gòu)來(lái)組織。每一行表示一條記錄,每一行包含若二維結(jié)構(gòu)來(lái)組織。每一行表示一條記錄,每一行包含若干列。通過(guò)調(diào)用類干列。通過(guò)調(diào)用類ContentProvider提供的方法,其提供的方法,其他應(yīng)用程序可以對(duì)提供的數(shù)據(jù)進(jìn)行查詢、更新、插入、他應(yīng)用程序可以對(duì)提供的數(shù)據(jù)進(jìn)行查詢、更新、插入、刪除等操作刪除等操作從類從類ContentProvider派生出一個(gè)子

19、類,即自定義一派生出一個(gè)子類,即自定義一個(gè)個(gè)ContentProvider,并根據(jù)需要重寫其中的方法,并根據(jù)需要重寫其中的方法在在AndroidManifest.xml中注冊(cè)這個(gè)自定義的中注冊(cè)這個(gè)自定義的ContentProviderContent Providern自定義自定義ContentProvider需重寫的主要方法需重寫的主要方法boolean onCreate()Cursor query(Uri uri,String projection,String selection, String selectionArgs, String sortOrder)int update(Uri

20、uri,ContentValues values, String selection,String selectionArgs)Uri insert(Uri uri, ContentValues values)int delete(Uri uri, String selection, String selectionArgs)String getType(Uri uri)Content Providern使用使用Content Resolver獲取數(shù)據(jù)獲取數(shù)據(jù)通過(guò)類通過(guò)類Context的的getContentResolver()方法可以方法可以獲得一個(gè)類獲得一個(gè)類ContentResolver

21、的實(shí)例的實(shí)例類類ContentResolver的常用方法有:的常用方法有:Cursor query(Uri uri,String projection,String selection,String selectionArgs, String sortOrder)int update(Uri uri, ContentValues values, String where, String selectionArgs)Uri insert(Uri url, ContentValues values)int delete(Uri url, String where, String selection

22、Args)Content Providern在例在例SQLite1中創(chuàng)建類中創(chuàng)建類StuProvider(已建已建)只介紹向其他應(yīng)用程序提供查詢的只介紹向其他應(yīng)用程序提供查詢的ContentProvider接口接口,其他可自行完成其他可自行完成public class StuProvider extends ContentProvider SQLiteDatabase db; . public boolean onCreate() try db = SQLiteDatabase.openOrCreateDatabase( this.getContext().getFilesDir().toSt

23、ring() + /stu.db3, null); catch(Exception e) return false; return true; public Cursor query(Uri uri, String projection, String selection, String selectionArgs, String sortOrder) Cursor cursor = db.rawQuery(select * from student, null); return cursor; Content Providern在上例工程的在上例工程的AndroidManifest.xml文

24、件中添加文件中添加標(biāo)記,注冊(cè)定義的標(biāo)記,注冊(cè)定義的StuProvidern定義后定義后URI為為content:/com.example.sqlite1.StuProvider . . Content Providern在本例工程的主在本例工程的主Activity中獲取應(yīng)用發(fā)布的數(shù)據(jù)中獲取應(yīng)用發(fā)布的數(shù)據(jù)ContentResolver resolver = getContentResolver();Uri uri = Uri.parse(content:/com.example.sqlite1.StuProvider);Cursor cursor = resolver.query(uri, nu

25、ll, null, null, null);while(true) if(cursor.moveToNext() = false) break; String i = cursor.getString(0); String n = cursor.getString(1); int s = cursor.getInt(2); String tmp = list.getText().toString(); list.setText(tmp + n + i + + n + + s);Content Providern實(shí)例實(shí)例:ReadContentContent Providern使用使用Activity.managedQuery()獲取數(shù)據(jù)獲取數(shù)據(jù)獲取一個(gè)包含指定數(shù)據(jù)的獲取一個(gè)包含指定數(shù)據(jù)的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論