筆記類(lèi)應(yīng)用完整實(shí)現(xiàn)方案-客戶端部分

背景介紹

出于對(duì)技術(shù)的熱忱,一直再研究筆記類(lèi)和清單類(lèi)應(yīng)用,希望可以打造一個(gè)類(lèi)似的應(yīng)用.筆記類(lèi)應(yīng)用和其他應(yīng)用有一個(gè)很大的不同,數(shù)據(jù)會(huì)涉及到多端同步(一般app每次直接從服務(wù)器獲取數(shù)據(jù),不在本地保存數(shù)據(jù)). 當(dāng)某個(gè)設(shè)備上,數(shù)據(jù)發(fā)生變更后,就需要同步到服務(wù)器.當(dāng)服務(wù)器上有數(shù)據(jù)變更后,其他設(shè)備就應(yīng)該在合適的時(shí)機(jī)把數(shù)據(jù)同步下來(lái). 這種機(jī)制適用于一大類(lèi)應(yīng)用,而不止局限于筆記app,如網(wǎng)盤(pán)app也類(lèi)似,只是具體同步的數(shù)據(jù)結(jié)構(gòu)存在差異.
在研究實(shí)現(xiàn)方案的過(guò)程中,幫助最大是印象筆記開(kāi)放同步方案Leanote開(kāi)發(fā)實(shí)現(xiàn)源碼.

整體方案簡(jiǎn)述

每個(gè)用戶上記錄一個(gè)userMaxUsn;每條用戶數(shù)據(jù)都有一個(gè)usn,每次數(shù)據(jù)變更,就把用戶上的userMaxUsn加1,然后將此值作為該條數(shù)據(jù)的usn.客戶端通過(guò)usn比較,判斷本地和服務(wù)器的數(shù)據(jù),到底哪個(gè)新,如果服務(wù)器新,就下載更新.

客戶端實(shí)現(xiàn)方案詳述

  1. 同步時(shí)機(jī)
    1). 啟動(dòng)app進(jìn)行一次同步
    2). 每次變更本地筆記,進(jìn)行一次同步
    3). 每次刷新,進(jìn)行一次同步
  2. 同步流程詳圖
  3. 主要技術(shù)點(diǎn)
    Coroutines、ViewModel、LiveData、Retrofit、Paging、Room

源代碼

https://gitee.com/hspbc/cloudNote/tree/master/client

附錄

  1. 印象筆記開(kāi)放同步方案
  2. Leanote開(kāi)發(fā)實(shí)現(xiàn)源碼
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容