TeamTalk Android程式碼分析(商務程序篇)

來源:互聯網
上載者:User

標籤:

TeamTalk Android程式碼分析(商務程序篇)

1.1 總體結構

1.總體結構有點類似MVC的感覺,模組結構從上向下大體是:

 

UI層:Activity和Fragment構成,期間包括常用的一些開原始檔控制如:imageloader,speedx,gifview等,和下層資料變更通知通過匯流排事件完成(EventBus)

 

管理層:Service(即:imservice,下文均採用此稱呼)和一些按照業務劃分的Manager(loginmanager,contactmanager,sessionmanager,socketmanager 等),該層負責業務的流轉和資料介面的提供,

 

資料和緩衝層:才greendao實現,包括一系列業務相關的緩衝,緩衝的對象在各manager實體中處理。 

 

網路層:具體由netty實現,擷取或發送資料通過pb協議實現(protobuf)

2.1 登入過程

1>請求登入伺服器(http),分配Message Service器及其他相關配置

 

2>連結請求Message Service器

 

3>其中如果網路連接失敗,採用本地登入過程,即:在登入狀態的情況下,沒有網路也可以查看本地曆史資訊。

 

4>登入Message Service器成功後,發送匯流排事件通知imservice

 

5>imservice初始化各manager,開啟本地和網路資料請求,本機快取及其他配置的資料填充。

3.1 ContactManager的初始化操作

3.1.1 本機資料的業務操作

1>資料庫load部門列表,並填充部門map(departmentmap)

2>資料庫load使用者列表,並填充使用者map(usermap)

3>發送匯流排事件,通知相關介面(聊天/通訊錄/my),並設定該manager資料狀態就緒

 

相關頁面動作如下:

1>聊天頁面動作:只有session,user,group 資料全部就緒,這個頁面才會更新,稍後再詳細分析

2>通訊錄頁面動作:

  (1)設定使用者tab資料,更新ui

  (2)設定部門tab資料,更新ui

  (3)使用者和部門資料就緒,搜尋狀態可操作

3>通過loginmanager擷取登入資訊,更新ui(這個位置的觸發,可以放置在登入成功後及時事件通知)

3.1.2 網路資料的業務操作

1>按照本機存放區的最後時間點作為參數,請求部門列表

2>按照本機存放區的最後時間點作為參數,請求使用者列表

3>擷取部門資料:

  1)緩衝map

  2)儲存db

  3)發送匯流排事件(userinfoevent事件,user_info_update),通知頁面更新ui

     涉及頁面有:通訊錄頁面:使用者列表ui/部門列表ui/使用者詳細資料(userinfofragment),如果頁面收到通知,則擷取快取資料,更新ui

4>擷取使用者資料:

  1)緩衝usermap

  2)儲存db

  3)發送匯流排事件更新ui,頁面響應同部門資料。

 

注意事項:通知頁面更新的匯流排事件,考慮採用poststicky 形式。

3.2 GroupManager的初始化操作

TeamTalk Android程式碼分析(商務程序篇)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.