【紙飛機(PaperPlane)IMITATE版】知識點整理

特別聲明:本項目仿照自如何用一週時間開發一款Android APP並在Google Play上線 ,項目僅供學習交流使用。


花了半個月的時間,終於跟着黎趙太郎 大神的步伐把自己的紙飛機給“折”好了。咻~成功起航!

本項目地址:https://github.com/374901588(喜歡可以star一波哦~)


本篇文章只是對本人所開發的紙飛機APP進行知識點的整理,以及原項目大體實現思路的整理。不喜勿噴。


1、原項目大體實現思路:

首先是從網絡上請求新聞的列表,請求成功後,會開啓後臺服務去請求新聞對應的詳細內容,同時緩存到本地。


2、仿照紙飛機知識點整理:

(與原項目相同的地方)
1. 整體架構參照原作者的採用MVP模式
2. Material designd控件的使用
3. Chrome Custom Tabs與WebView的使用
4. Glide圖片加載框架的使用
5. 爲了保持在低版本SDK中的UI一致性,引入material data time picker庫
6. Android 7.1新特性App Shortcuts的引入
7. 原生設置界面PreferenceScreen的運用

(仿照版本修改的地方)
8. 對於數據的網絡請求,用Retrofit2代替了Volley
9. 採用LitePal數據庫框架代替了原本的SQLite
10. 某些邏輯運用了RxJava、RxAndroid
11. 運用Lambda表達式簡化代碼
12. 使用Data Binding簡化邏輯


3、在原項目基礎的改動&改善

  1. 對於顯示新聞列表的Adapter進行了處理,將裏面設計的各種ViewHolder單獨提取了出來,減少了重複代碼的出現

  2. 解決切換主題總是直接顯示MainFragment的問題(原項目中在收藏界面點擊切換主題時,在切換主題後會直接顯示首頁界面)

  3. 從收藏界面進入文章詳細界面,把該文章的收藏取消,再返回收藏界面會實時刷新收藏列表(原項目需要手動刷新才能去掉前文取消收藏的文章)

  4. 簡化了設置和關於界面的實現邏輯(由於這兩個界面比較簡單,就沒有使用MVP模式)

  5. 原項目在正常情況下請求到了新聞列表後會開啓一個後臺服務將對應的詳細內容也緩存到本地數據庫,但是之後在進入詳細界面時會先從網絡獲取,如果沒有網絡纔會從本地獲取,那麼這就會導致一個問題,如果在後臺服務獲取詳細內容失敗時,那麼以後想要查看獲取失敗時的內容,只能在有網的情況下才能正常查看,無網絡時是無法進行的。所以我修改了一下邏輯,進入詳細內容界面時先從本地獲取數據,如果本地沒有成功的緩存有,在通過網絡獲取,獲取成功的同時也會緩存到本地,這樣就能避免上述的特殊情況,且能夠節省用戶流量。

  6. 修復了在進入應用時沒有緩存有本地數據且沒有網絡的情況下(如第一次進入應用且沒有網絡)出現奔潰的情況。

原因出在DoubanMomentFragment第一次進入時因爲沒網DoubanMomentFragment會彈出一個SnackBar,(該SnackBar是相對於RefreshLayout顯示的),但是在fragment_liset佈局中缺少父佈局CoordinatorLayout,而SnackBar所依賴的view又要在以CoordinatorLayout作爲直接父佈局,所以會導致異常:java.lang.IllegalArgumentException: No suitable parent found from the given view. Please provide a valid view.從而奔潰。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章