- RecyclerView的上拉加載、下拉刷新怎麼實現?RecyclerView原生實現側滑、拖動?
-
上拉加載、下拉刷新
總結:上拉加載更多功能實際上就是給RecyclerView增加一個FooterView,然後通過判斷是否滑動到了最後一條Item,來控制FooterView的顯示和隱藏。下載刷新同理。 -
側滑和拖動:拖拽和側滑刪除的功能要藉助
ItemTouchHelper
這個類,我們只需要創建出一個ItemTouchHelper
對象,然後調用mItemTouchHelper.attachToRecyclerView(recyclerView);
就可以了。
我們看一下ItemTouchHelper的構造方法,他需要一個Callback
public ItemTouchHelper(Callback callback) {
mCallback = callback;
}
這個Callback是ItemTouchHelper的內部類,所以我們需要寫一個類繼承自ItemTouchHelper.Callback ,然後重寫裏面的方法
- 數據的各種存儲方式
(1)SharedPreferences。適用於保存少量的數據,且這些數據的格式非常簡單:字符串型、基本類型的值。比如應用程序的各種配置信息、解鎖口令密碼等。
(2)文件存儲數據 。文件存儲方式是一種較常用的方法,在 Android 中讀取/寫入文件的方法,與 Java 中實現 I/O 的程序是完全一樣的,提供了 openFileInput()和openFileOutput()方法來讀取設備上的文件。
(3)SQLite數據庫存儲數據。SQLite 是 Android 所帶的一個標準的數據庫,它支持SQL 語句,它是一個輕量級的嵌入式數據庫。
(4)使用ContentProvider存儲數據。主要用於應用程序之間進行數據交換,從而能夠讓其他的應用保存或讀取此 Content Provider 的各種數據類型。
(5)網絡存儲數據。通過網絡上提供給我們的存儲空間來上傳(存儲)和下載(獲取)我們存儲在網絡空間中的數據信息。 - 斷點續傳下載,續傳上傳
多線程下載的原理實際上與單線程下載的原理並無區別。
- 首先,多線程下載只需要確定好下載一個文件需要多少個線程,一般來說最好爲3條線程,因爲線程過多會佔用系統資源,而且線程間的相互競爭也會導致下載變慢。
- 然後,下載的時候將文件分割爲三份(假設用3條線程下載)下載。創建與下載文件同樣大小的空殼文件RandomAccessFile,它的開始結束爲止用以下代碼
conn.setRequestProperty("Range", "bytes=" + start + "-" + end)
確定。 - 最後就是斷點續傳了,只需要才程序停止下載的時候記錄下最後的下載位置就好了,當下次下載的時候從當前停止的位置開始下載。
app在斷網情況下怎麼保存用戶信息(數據緩存)
Android客戶端緩存機制是android應用開發中非常重要的一項工作了,使用緩存機制不僅可以爲客戶節省流量,同時提高了用戶體驗。分爲文字緩存和多媒體文件緩存。
首先是文字緩存:將服務器交互得到的json數據存入sd卡中,並在數據庫添加該數據的記錄。添加數據庫記錄時,可以提供2個字段,請求到的Url和本地保存後的文件地址,每次加載數據之前都會根據Url在數據庫中檢索。
然後是媒體文件緩存:主要是圖片三級緩存,現在流行的圖片加載框架都支持三級緩存。如果是自己實現三級緩存,主要 用到的Lrucache。Activity現場保存,現場恢復
- 現場保存:重寫onSaveInstanceState()方法,在此方法中保存需要保存的數據,該方法將會在activity被回收之前調用。
- 現場恢復:通過重寫 onRestoreInstanceState()方法可以從中提取保存好的數據