欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android Mms之:草稿管理的應(yīng)用

 更新時(shí)間:2013年05月22日 11:19:11   作者:  
本篇文章是對(duì)Android中的草稿管理進(jìn)行了詳細(xì)的分析與介紹,需要的朋友參考下

當(dāng)編輯完一條信息后,如果在沒(méi)有發(fā)送的情況下退出編輯頁(yè)面,那么信息會(huì)自動(dòng)保存為草稿。也就是在ComposeMessageActivity的onStop()時(shí),如果還沒(méi)有發(fā)送,那么就會(huì)調(diào)用WorkingMessage.saveDraft()來(lái)把信息保存為草稿。期間也會(huì)檢查一些條件,比如消息是否已被標(biāo)識(shí)為放棄,或是是否為空(isWorthSaving),如果一切正常會(huì)saveDraft()并會(huì)用Toast來(lái)告知信息已保存為草稿。
草稿的保存也是針對(duì)不同的信息而不同,短信和彩信的流程有所不同。
保存短信為草稿
WorkingMessage會(huì)先取出短信內(nèi)容,然后開啟一個(gè)新的線程去做接下來(lái)的事,WorkingMessage.saveDraft()也會(huì)就此返回。在線程中,會(huì)先確保ThreadId的正確,如果沒(méi)有正確的ThreadId,就不會(huì)保存。接著把信寫進(jìn)數(shù)據(jù)庫(kù),把Type標(biāo)識(shí)為Draft。最后會(huì)刪除這個(gè)Thread所擁有的彩信草稿,因?yàn)橐粋€(gè)Thread中只能有一個(gè)草稿,所以如果有了新的短信草稿那么就要?jiǎng)h除舊的彩信草稿,同理,后面保存彩信草稿的時(shí)候也會(huì)刪除短信草稿的。
保存彩信為草稿
與保存短信類似,ComposeMessageActivity在onStop時(shí)調(diào)用WorkingMessage.saveDraft();WorkingMessage.saveDraft()先會(huì)刷新收信人信息,然后會(huì)創(chuàng)建一個(gè)彩信的數(shù)據(jù)結(jié)構(gòu)SendReq,然后啟動(dòng)線程做其他的事,saveDraft()也就此返回。在線程中,先是保證是一個(gè)合法的Thread,也就是threadid要正確。同時(shí)也要把這個(gè)Thread標(biāo)志為有草稿,這個(gè)是由一個(gè)DraftCache在管理,它是一個(gè)HashMap,來(lái)標(biāo)識(shí)哪些Thread含有Draft。如果這個(gè)Thread以前沒(méi)有附件,那么就為它創(chuàng)建附件,也就是把SendReq寫入數(shù)據(jù)庫(kù);相反,如果已有了附件,那么就更新數(shù)據(jù)庫(kù),把SendReq和Slideshow,日期更新成為當(dāng)前信息的內(nèi)容。最后刪除掉已有短信草稿。

這里要注意的對(duì)于彩信的操作都由Frameworks中的com.google.android.mms.*包里面提供的類和工具來(lái)完成的,它里面會(huì)提供Android所支持的彩信的數(shù)據(jù)結(jié)構(gòu)SendReq,把數(shù)據(jù)(Text,Medias,F(xiàn)iles)放入SendReq的方法PduPart,PduBody,把SendReq寫入數(shù)據(jù)庫(kù)和從數(shù)據(jù)中讀取SendReq—通過(guò)PduPersister。客戶端的應(yīng)用程序,只是創(chuàng)建SendReq,用提供的方法把數(shù)據(jù)寫入SendReq中,用PduPersister來(lái)寫入數(shù)據(jù)庫(kù)和從數(shù)據(jù)庫(kù)中提取,最后用HTTP協(xié)議把SendReq發(fā)送出去。

同時(shí)還有一個(gè)專門的類DraftCache用來(lái)管理哪些Thread含有草稿,它的內(nèi)部是一個(gè)HashMap,可以標(biāo)識(shí)哪些Therad含有草稿。所以,在對(duì)草稿操作的地方都會(huì)用到DraftCache,如果一個(gè)Thread含有草稿,就需要把它的ThreadId標(biāo)識(shí)為有草稿;如果一個(gè)Thread的信息已發(fā)送出去,就要把它標(biāo)識(shí)為不含有草稿。

傳統(tǒng)的以文件夾方式管理信息都會(huì)有一個(gè)專門用于存放草稿的文件夾叫草稿箱。每次編輯信息,無(wú)論是發(fā)給哪個(gè)人,都可以放入這草稿箱。但是這里也可以發(fā)現(xiàn),與傳統(tǒng)的以文件夾方式不同,Android中的Mms的草稿是每個(gè)Thread一個(gè),而且只有一個(gè),換句話說(shuō),不可能存儲(chǔ)太多的草稿。因?yàn)锳ndroid中的Mms是以對(duì)話Thread方式來(lái)管理信息的,而一個(gè)Thread,一次對(duì)話,只應(yīng)該有一個(gè)沒(méi)“說(shuō)完”的話,所以這種設(shè)計(jì)也是合常理的。

相關(guān)文章

  • Android自定義videoview仿抖音界面

    Android自定義videoview仿抖音界面

    這篇文章主要為大家詳細(xì)介紹了Android自定義videoview仿抖音界面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Android中多個(gè)ContentProvider的初始化順序詳解

    Android中多個(gè)ContentProvider的初始化順序詳解

    在日常Android開發(fā)中經(jīng)常會(huì)寫一些sdk來(lái)供他人或者自己調(diào)用,一般這些sdk都涉及到初始化,下面這篇文章主要給大家介紹了關(guān)于Android中多個(gè)ContentProvider的初始化順序的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • Kotlin中Object關(guān)鍵字的使用示例介紹

    Kotlin中Object關(guān)鍵字的使用示例介紹

    在Kotlin中object是一個(gè)特殊的關(guān)鍵字。主要用于聲明一個(gè)類的同時(shí)創(chuàng)建這個(gè)類的對(duì)象(例如單例)。在Kotlin中它有三個(gè)方面的應(yīng)用:對(duì)象表達(dá)式,對(duì)象聲明和伴生對(duì)象
    2022-09-09
  • Android中AsyncTask的入門使用學(xué)習(xí)指南

    Android中AsyncTask的入門使用學(xué)習(xí)指南

    AsyncTask異步任務(wù),用于執(zhí)行耗時(shí)任務(wù)并在UI線程中更新結(jié)果。下面這篇文章主要給大家介紹了關(guān)于Android中AsyncTask入門使用的相關(guān)資料,需要的朋友可以參考下
    2019-02-02
  • Flutter網(wǎng)絡(luò)請(qǐng)求的3種簡(jiǎn)單實(shí)現(xiàn)方法

    Flutter網(wǎng)絡(luò)請(qǐng)求的3種簡(jiǎn)單實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了給大家Flutter網(wǎng)絡(luò)請(qǐng)求的3種簡(jiǎn)單實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Flutter具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Android實(shí)現(xiàn)WebView刪除緩存的方法

    Android實(shí)現(xiàn)WebView刪除緩存的方法

    這篇文章主要介紹了Android實(shí)現(xiàn)WebView刪除緩存的方法,實(shí)例分析了Android針對(duì)WebView操作緩存的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • 解析Android開發(fā)優(yōu)化之:對(duì)界面UI的優(yōu)化詳解(三)

    解析Android開發(fā)優(yōu)化之:對(duì)界面UI的優(yōu)化詳解(三)

    本篇文章主要討論一下復(fù)雜界面中常用的一種技術(shù)——界面延遲加載技術(shù)
    2013-05-05
  • Android 數(shù)據(jù)庫(kù)打包隨APK發(fā)布的實(shí)例代碼

    Android 數(shù)據(jù)庫(kù)打包隨APK發(fā)布的實(shí)例代碼

    有些時(shí)候我們的軟件用到SQLite數(shù)據(jù)庫(kù),這個(gè)時(shí)候怎么把一個(gè)做好的數(shù)據(jù)庫(kù)打包進(jìn)我們的APK呢
    2013-10-10
  • Android網(wǎng)絡(luò)編程之獲取網(wǎng)絡(luò)上的Json數(shù)據(jù)實(shí)例

    Android網(wǎng)絡(luò)編程之獲取網(wǎng)絡(luò)上的Json數(shù)據(jù)實(shí)例

    這篇文章主要介紹了Android網(wǎng)絡(luò)編程之獲取網(wǎng)絡(luò)上的Json數(shù)據(jù)實(shí)例,本文用完整的代碼實(shí)例講解了在Android中讀取網(wǎng)絡(luò)中Json數(shù)據(jù)的方法,需要的朋友可以參考下
    2014-10-10
  • Android線程管理之ActivityThread

    Android線程管理之ActivityThread

    線程通信、ActivityThread及Thread類是理解Android線程管理的關(guān)鍵。通過(guò)本文給大家介紹Android線程管理之ActivityThread 的相關(guān)知識(shí),對(duì)android線程管理相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2016-01-01

最新評(píng)論