• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      淺析Android之?dāng)?shù)據(jù)共享

      2011-12-31 00:00:00王亮亮葉苗
      科技資訊 2011年28期

      摘 要:Android是基于Linux開放性內(nèi)核的操作系統(tǒng),是Google公司在2007年11月5日公布的手機(jī)操作系統(tǒng)。Android作為Google移動互聯(lián)網(wǎng)戰(zhàn)略的重要組成部分,將進(jìn)一步推進(jìn)“隨時(shí)隨地為每個(gè)人提供信息”這一企業(yè)目標(biāo)的實(shí)現(xiàn)。Google的目標(biāo)是讓移動通信不依賴于設(shè)備,甚至是平臺。出于這個(gè)目的,Android將完善而不是替代Google長期以來推行的移動發(fā)展戰(zhàn)略:通過與全球各地的手機(jī)制造商和移動運(yùn)營商成為合作伙伴,開發(fā)既實(shí)用又有吸引力的移動服務(wù),并推廣這些產(chǎn)品。

      關(guān)鍵詞:保存方式 數(shù)據(jù)共享 文件

      中圖分類號:TP2\t\t\t文獻(xiàn)標(biāo)識碼:A\t\t\t文章編號:1672-3791(2011)10(a)-0010-01

      1 Android數(shù)據(jù)共享

      數(shù)據(jù)是應(yīng)用的核心,但是在Android中,每一個(gè)應(yīng)用都運(yùn)行在各自的進(jìn)程中,當(dāng)一個(gè)應(yīng)用需要訪問其他應(yīng)用的數(shù)據(jù)時(shí),也就是數(shù)據(jù)需要在不同的虛擬機(jī)之間傳遞,這樣的情況操作起來可能有些困難—— 在正常情況下,不能讀取其他應(yīng)用的數(shù)據(jù)。

      那么Android是如何實(shí)現(xiàn)應(yīng)用程序之間數(shù)據(jù)共享的?一個(gè)應(yīng)用程序可以通過一套標(biāo)準(zhǔn)及統(tǒng)一的接口將自己的數(shù)據(jù)暴露出去,而外界可以通過這一套標(biāo)準(zhǔn)及統(tǒng)一的接口和這個(gè)程序里的數(shù)據(jù)打交道。

      2 通過Intent實(shí)現(xiàn)數(shù)據(jù)共享

      Android為了屏蔽進(jìn)程的概念,利用不同的組件(Activity、Service)來表示進(jìn)程之間的通信。組件間通信的核心機(jī)制是Intent,通過Intent可以開啟一個(gè)Activity或Service,而不論這個(gè)Activity或Service是屬于當(dāng)前應(yīng)用還是其它應(yīng)用的。

      Intent包含兩部分。

      (1)動作(action)—— 要執(zhí)行的動作,即要轉(zhuǎn)移的組件。

      (2)內(nèi)容(category、data)——要傳遞的數(shù)據(jù),即要共享的數(shù)據(jù)。

      Intent類型。

      (1)顯式—— 直接指定消息目的地,只適合同一進(jìn)程內(nèi)的不同組件之間通信。

      new Intent(this,Target.class)

      2)隱式—— 需要在AndroidMainifest.xml中注冊,一般用于跨進(jìn)程通信。

      new Intent(String action)

      有了Intent這種基于消息的進(jìn)程內(nèi)或進(jìn)程間通信模型,我們就可以通過Intent去開啟一個(gè)Service,也可以通過Intent跳轉(zhuǎn)到另一個(gè)Activity,不論上面的Service或Activity是在當(dāng)前進(jìn)程還是其它進(jìn)程內(nèi)的,即不論Service或Activity是當(dāng)前應(yīng)用還是其它應(yīng)用的,通過消息機(jī)制都可以進(jìn)行通信,實(shí)現(xiàn)數(shù)據(jù)共享。但是通過消息機(jī)制實(shí)現(xiàn)的進(jìn)程間通信,有一個(gè)弊端就是,如果我們的Activity與Service之間的交往不是簡單的Activity開啟Service操作,而是要隨時(shí)發(fā)一些控制請求,那么必須就要保證Activity在Service的運(yùn)行過程中隨時(shí)可以連接到Service。

      3 通過SharedPreferes實(shí)現(xiàn)

      SharedPreferes是一種輕量級的數(shù)據(jù)保存方式。通過SharedPreferes可以將NVP(Name/Value Pair,名值對)保存在Android的文件系統(tǒng)中,而且SharedPreferes完全屏蔽的對文件系統(tǒng)的操作過程,開發(fā)人員僅是通過調(diào)用SharedPreferes對NVP進(jìn)行保存和讀取的。另外,SharedPreferes多用于保存軟件配置參數(shù),它主要是現(xiàn)實(shí)小數(shù)據(jù)的存儲與恢復(fù)顯示狀態(tài)。其背后是用xml文件存放數(shù)據(jù),文件存放在/data/data//shared_prefs目錄下。

      SharedPreferes支持三種訪問模式。

      (1)私有(MODE_PRIVATE):僅有創(chuàng)建程序有權(quán)對其進(jìn)行讀取或?qū)懭搿?/p>

      (2)全局讀(MODE_WORLD_READABLE):不僅創(chuàng)建程序可以對其進(jìn)行讀取或?qū)懭耄渌麘?yīng)用程序也有讀取操作的權(quán)限,但沒有寫入的權(quán)限。

      (3)全局寫(MODE_WORLD_WRITEABLE):創(chuàng)建程序和其他程序都可以對其進(jìn)行寫入操作,但其他程序沒有讀取的權(quán)限。

      SharedPreferes的使用方法。

      (1)保存數(shù)據(jù)。

      ①通過上下文對象獲得一個(gè)Shared Preferences對象。

      ②利用得到SharedPreferences對象獲得一個(gè)Edit對象,使用Edit對象實(shí)現(xiàn)對簡單數(shù)據(jù)的保存,注意要記得Edit的commit方法。

      (2)獲取數(shù)據(jù)。

      ①通過上下文對象獲得一個(gè)Shared Preferences對象。

      ②使用SharedPreferences對象的get方法獲取數(shù)據(jù)。

      4 Content Provider

      在實(shí)際的應(yīng)用中,每個(gè)應(yīng)用都可以創(chuàng)建自己的數(shù)據(jù),但是這個(gè)數(shù)據(jù)對其他應(yīng)用來說是不可見的,當(dāng)某個(gè)應(yīng)用需要將自己的數(shù)據(jù)共享給其他應(yīng)用使用時(shí),我們就需要使用到內(nèi)容提供者ContentProvider,使用ContentProvider去訪問某個(gè)應(yīng)用程序的數(shù)據(jù),讓我們不必關(guān)心某個(gè)應(yīng)用程序的數(shù)據(jù)存儲方式。如果一個(gè)程序想讓其他程序操作自己的數(shù)據(jù)就必須定義自己的ContentProvider然后再清單文件中進(jìn)行注冊,其他應(yīng)用程序就可以根據(jù)ContentProvider定義的Uri對某一應(yīng)用程序的數(shù)據(jù)進(jìn)行操作。

      android中的電話本等數(shù)據(jù)就是通過ContentProvider實(shí)現(xiàn)數(shù)據(jù)共享的,系統(tǒng)中有很多已經(jīng)存在的共享Uri。我們可以使用ContentResolver通過Uri來操作不同表的數(shù)據(jù);如Contacts.People.CONTENT_URI。

      定義和使用自己的ContentProvider需要以下三步。

      第一步,定義自己的ContentProvider,必須繼承ContentProvider,根據(jù)業(yè)務(wù)的需要實(shí)現(xiàn)相應(yīng)的方法。要注意的是,我們自己定義的ContentProvider要提供對數(shù)據(jù)操作的入口(Content Provider可以對數(shù)據(jù)庫進(jìn)行操作當(dāng)然,也可以對文件類型的數(shù)據(jù)進(jìn)行操作)。

      第二步,在項(xiàng)目Manifest.xml文件中配置我們自定義的ContentProvider。

      第三步,在其他應(yīng)用中使用ContentResolver對ContentProvider進(jìn)行訪問(實(shí)際上ContentRe solver對象簽名方法在內(nèi)部最終是根據(jù)傳入的Uri拿到對應(yīng)的ContentProvider對象,實(shí)現(xiàn)對數(shù)據(jù)的操作)。

      總之,通過以上幾種方式,Android的應(yīng)用程序間可以實(shí)現(xiàn)數(shù)據(jù)共享。另外,Android在數(shù)據(jù)共享的安全方面有一個(gè)統(tǒng)一、完備和輕便的安全策略模型,即權(quán)限設(shè)置。我們可以定義自己permission,然后在需要的組件處設(shè)置該permission,那么用戶要想該使用組件的數(shù)據(jù)時(shí),就必須要配置該permission,否則訪問就會失敗。

      珲春市| 娄底市| 博乐市| 汝城县| 绥阳县| 崇信县| 永顺县| 宝丰县| 伊宁县| 且末县| 田林县| 桐乡市| 东兰县| 吴桥县| 瑞安市| 五大连池市| 隆子县| 章丘市| 独山县| 沽源县| 阿克| 新巴尔虎右旗| 江川县| 措勤县| 锦屏县| 中山市| 上蔡县| 东宁县| 西青区| 宣威市| 东阳市| 报价| 象州县| 湖南省| 义乌市| 彭水| 台前县| 阜宁县| 隆子县| 临湘市| 凌源市|