Android載入更多資料重複顯示的問題該怎麼解決

時間 2021-05-08 18:34:35

1樓:簡單點

文章首發與匠邦技術部落格: https://

API處理分頁看似簡單,實際上暗藏危機。最常見的分頁方式,大概是下面這樣的

/users/?page=1&limit=5

//服務端返回

}最理想的情況下,客戶端請求第一頁的5條資料,服務端如常返回,比如下圖:

拿Twitter的圖用一下,假設我們的資料庫有10條資料,按照5條一頁,正好有2頁。

在理想情況下,客戶端拉取資料時不會出現任何異常。但,這僅僅是正常情況,如果此時剛好有2條新資料插入。

要解決此類問題,就不能使用常規的分頁方式。現在,我們換乙個思路,客戶端拉取資料時不再傳page,改為item_id,我們就把它稱為max_id

/users/?max_id=5&limit=5

此時服務端就知道我們上次拉取到了item_id為5的資料,繼續在它後面拉取5條, 如下圖:

恩,再一次取出了正確的資料。可能你覺得一切都正常了,但還是隱藏了乙個致命的缺陷。

上面的資料能正常獲取,是因為資料都是乙個有序的集合,如果資料無序,且從資料庫取出時需要按照某個字段排序,那麼一切再次打回原點:所有的分頁都亂了。

可以看出,兩種分頁方式都存在問題。所以這兩種需求都是必要的,我們需要根據不同的業務場景使用不同的分頁方式。

為了不造成客戶端的麻煩,我們對api的分頁做了一些更改。

},"data":{}

}我們由服務端來決定如何分頁,前端需要做的,只是把next欄位直接拼接到url中,這樣就可以應付各種分頁情況。

常規的分頁方式不能應付經常變更的資料,sinceid和maxid的方式不能應付有其他排序的資料。大概就是這個樣子,沒有一種萬能的分頁方案,我們只能針對具體的業務場景去設計乙個彈性的API來處理複雜的分頁場景。

ps: 最初我們想到的分頁方案,是直接使用item_id作為拉取資料的依據,後來看到Twitter的文章,感覺有更好的分頁方案,又懶得畫圖,所以就直接搬Twitter分頁的部分了。:)

Working with Timelines

2樓:

我不是很明白題主的意思,我就以我的理解說說,不知道資料庫有哪些資料可以供你去查詢獲取,就以你說的角標吧,你這麼搞會一直重複第一組資料,依你的意思,只要每次重新整理取前10角標資料就可以實現每次獲取新的資料,那麼你每次重新整理後,將角標置零,再讓它獲取當前第一組資料不就好了嗎?我是菜鳥,說得不對,還請題主原諒。

iOS 是不是比 Android 更流暢?如果是,原理是怎樣的?

賭聖小小 當然是了,安卓時至今日才能硬著口氣說旗艦機已經能三年不卡那些不是旗艦的呢?五年不卡可以麼?知道現在還在用iphone6的人有多少嗎?換機的原因是記憶體還電池不足了 就卡不卡而言,真的沒的談 mitomashiro 沒那麼玄學,說白了IOS乙個靠非線性動畫用的好,而且動畫做的很心機。效能不夠...

Python如何載入資料?

開拓者無畏 import pandas as pd匯入pandas模組passengers pd.read csv data AirPassengers.csv 匯入檔案資料,會直接生成乙個DataFrame資料格式,此處可以替換成你自己檔案的位址 df pd.DataFrame建立乙個新的Data...

LaTeX巨集包載入

我giao!雖然時間很久遠但我也要答!因為這些和我跟巨蟹男的相處時的問題很像啊 但是僅限於我認識的巨蟹哦 1.巨蟹男在初認識時喜歡活潑開朗的女孩子。但是注意這裡的話多不是什麼廢話都說幾句,那樣他會覺得很煩,還有在他工作學習時也不可,我的蟹子坐我前面,上課時我會各種接老師教授的梗,他會笑的跟傻子一樣,...