Android Dialer--通話記錄加載流程

一.通話記錄的加載過程和大部分的應用類似奠旺,也是異步查詢數(shù)據(jù)庫,得到查詢結(jié)果后再刷新ListView析苫。但是在加載通話記錄時還有一些特別的處理萌狂。特別是在綁定Listview時涉及到了一些復雜的操作。

顯示通話記錄由CallLogFragment.java文件進行處理躏率。在加載通話記錄的過程中還用到了CallLogQueryHandler查詢通話記錄數(shù)據(jù)庫躯畴,CallLogAdapter填充ListView。

查詢通話記錄的過程大致如下:


其中CallLogQueryHandler繼承自CursorQueryHandler薇芝,該類是執(zhí)行異步數(shù)據(jù)庫查詢的常用類蓬抄。以上過程非常的常見,大部分程序都和該流程類似夯到。

1嚷缭、在CallLogFragment的onCreateView中設(shè)置RecyclerView的adapter,并調(diào)用fetchCalls查詢數(shù)據(jù)耍贾。

2阅爽、當查詢完成后會回調(diào)到CallLogFragment的onCallsFetched,并調(diào)用changeCursor荐开,registerContentObserver和registerDataSetObserver付翁,數(shù)據(jù)發(fā)生改變的時候,調(diào)用RecyclerView.Adapter的notifyDataSetChanged就會根據(jù)新的cursor rebind and relayout所有可見的view晃听。



二.關(guān)鍵是在CallLogAdapter?的bindView函數(shù)中執(zhí)行了很多難以理解的操作百侧。通過查看通話記錄的顯示內(nèi)容知道,在通話記錄中顯示了撥打電話的號碼能扒,通話記錄的類型佣渴,該號碼所對應的聯(lián)系人(如果號碼已加入聯(lián)系人)等。當掛斷電話時會查詢聯(lián)系人數(shù)據(jù)庫查找所撥打的電話對應的聯(lián)系人姓名赫粥,并把這些信息寫入通話記錄數(shù)據(jù)庫中观话。因此在通話記錄的數(shù)據(jù)庫中有一列用于存儲聯(lián)系人姓名。但是通話記錄中的聯(lián)系人名稱和聯(lián)系人數(shù)據(jù)庫中的名稱有時候是不一致的越平,通話記錄中的聯(lián)系人名稱只是一個緩存频蛔×槠龋考慮這樣一種情況:當和張三打完電話后,立刻把聯(lián)系人中的張三改為張三三晦溪,然后查看通話記錄會發(fā)現(xiàn)通話記錄也會變成張三三瀑粥,而通話記錄數(shù)據(jù)庫中仍然是張三。

為了使通話記錄中的顯示名稱和聯(lián)系人中的一致三圆,在顯示通話記錄時狞换,需要查詢每個電話號碼對應的聯(lián)系人信息。為了提高效率舟肉,在CallLogAdapter?中用CallLogAdapterExpirableCache數(shù)據(jù)結(jié)構(gòu)緩存查詢到的聯(lián)系人信息修噪,這樣當界面刷新時不需要再次執(zhí)行查詢操作。由于數(shù)據(jù)庫查詢操作比較耗時路媚,在bindView中不可能等到查詢結(jié)果返回之后再顯示界面黄琼。所以在bindView時采用了這樣的處理策略:首先顯示通話記錄中緩存的聯(lián)系人信息,然后開啟一個線程查詢聯(lián)系人信息整慎,并把這些信息緩存起來脏款。該線程的優(yōu)先級比較低,它會等cup空閑時執(zhí)行查詢聯(lián)系人的操作裤园。

如果聯(lián)系人中的信息和通話記錄數(shù)據(jù)庫中的信息不一致(其實這種情況比較少見)撤师,則發(fā)送消息給CallLogAdapter重新執(zhí)行顯示操作。具體的流程如下:

該時序圖只是展現(xiàn)了主要的框架拧揽,忽略了很多細節(jié)剃盾。

其中QueryThead負責查詢聯(lián)系人信息,得到聯(lián)系人信息緩存到ExpirableCache中强法,用于Bindview刷新通話記錄万俗。

Android 7.1 通話記錄詳解

Android7.0通話記錄詳解-數(shù)據(jù)表?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市饮怯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嚎研,老刑警劉巖蓖墅,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異临扮,居然都是意外死亡论矾,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門杆勇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贪壳,“玉大人,你說我怎么就攤上這事蚜退∪蜓ィ” “怎么了彪笼?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蚂且。 經(jīng)常有香客問我配猫,道長,這世上最難降的妖魔是什么杏死? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任泵肄,我火速辦了婚禮,結(jié)果婚禮上淑翼,老公的妹妹穿的比我還像新娘腐巢。我一直安慰自己,他們只是感情好玄括,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布系忙。 她就那樣靜靜地躺著,像睡著了一般惠豺。 火紅的嫁衣襯著肌膚如雪银还。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天洁墙,我揣著相機與錄音蛹疯,去河邊找鬼。 笑死热监,一個胖子當著我的面吹牛捺弦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播孝扛,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼列吼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了苦始?” 一聲冷哼從身側(cè)響起寞钥,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎陌选,沒想到半個月后理郑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡咨油,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年您炉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片役电。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡赚爵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情冀膝,我是刑警寧澤唁奢,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站畸写,受9級特大地震影響驮瞧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜枯芬,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一论笔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧千所,春花似錦狂魔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至待错,卻和暖如春籽孙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背火俄。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工犯建, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人瓜客。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓适瓦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親谱仪。 傳聞我的和親對象是個殘疾皇子玻熙,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法疯攒,內(nèi)部類的語法嗦随,繼承相關(guān)的語法,異常的語法卸例,線程的語...
    子非魚_t_閱讀 31,625評論 18 399
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,810評論 0 11
  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時...
    歐辰_OSR閱讀 29,374評論 8 265
  • 場所:病房 称杨,人物:質(zhì)控人員增蹭、患者質(zhì)控人員:您好云挟,打擾了贺待,我想向您了解一些情況,請問是否可以耽誤您一些時間呜舒?患者:...
    zoutenjunxu閱讀 727評論 0 2
  • “大家閨秀”應是如何模樣,我想應如寶釵一般:雪滿山中高士臥笨奠,月明林下美人來袭蝗,閑看美人唤殴,見之忘俗,不見奢華到腥,惟覺淡雅...
    煮茶的她閱讀 4,119評論 31 42