最美應用:從 Android 研發工程師的角度之“最美時光”

碼頭工人 9年前發布 | 41K 次閱讀 Android

@author ASCE1885的 Github 簡書 微博 CSDN

最近發現 最美應用 這樣一個網站,它會定期推介一些很有意思的app,作為開發者,每次看到很棒的app都會從實現角度進行剖析,想著如果是自己將如何實現呢?因此,就有了這個系列的文章,旨在從技術選型和架構的角度解讀一些有意思的app。

最美時光是最美應用團隊出品的一個紀念日app,用于記錄和分享那些重要的日子,我們就先從這個開始吧!

使用的開源函數庫

1. 開源日志記錄函數庫JakeWharton's Timber

Timber是明星程序員 JakeWharton 開源的一個日志記錄函數庫,它基于Android Log類基礎上, 提供了簡潔可擴展的API。

日志記錄行為被抽象為一顆一顆的樹??,例如有打印日志到Logcat的樹,有打印日志到文件的樹等等,如果我們要使用某種類型的樹,首選需要創建一個實例,并調用Timer.plant函數將其種植下來,之后就可以隨意使用了。

2. 輕量級的ORM框架ActiveAndroid

ActiveAndroid是目前常見的幾個ORM框架之一(除此之外,比較有名的開源解決方案還有 GreenDAOORMLite ),可以極大的簡化數據庫的使用,使用面向對象的方式管理數據庫,告別手寫SQL的歷史。每一個數據庫表都可以被映射為一個類,開發者只需使用類似save()或者delete()這樣的函數即可。

參考文檔:

官方文檔

3. JSON解析函數庫GSON

GSON是Google出品的函數庫,可以將JSON字符串反序列化為對應的Java對象,或者反過來將Java對象序列化為對應的JSON字符 串。免去了開發者手動通過JSONObject和JSONArray逐個JSON字段進行解析的煩惱,也減少了出錯的可能性,增強了代碼的質量。

4. 點擊漣漪效果控件RippleView

這個控件是在Android 2.3及以上平臺實現的兼容Android L平臺引入的View點擊漣漪效果。

最美應用:從 Android 研發工程師的角度之“最美時光”

5. 現代的HTTP函數庫OkHttp

OkHttp是一個高效的HTTP客戶端,具有如下特性:

  • 支持HTTP/2和SPDY,對同一臺主機的所有請求共享同一個socket
  • 當SPDY不可用時,使用連接池減少請求的延遲
  • 透明的GZIP壓縮減少下載的數據大小
  • 緩存響應避免重復的網絡請求

OkHttp在網絡性能很差的情況下能夠很好的工作,它能夠避免常見的網絡連接問題。如果你的HTTP服務有多個IP地址,OkHttp在第一次 連接失敗時,會嘗試其他可選的地址。這對于IPv4+IPv6以及托管在冗余數據中心的服務來說是必要的。OkHttp使用現代的TLS特性(SNI, ALPN)初始化HTTP連接,當握手失敗時,會降級使用TSL1.0嘗試初始化連接。

更詳細的使用方法參見 文檔

6. 滾輪選擇器控件android-wheel

android-wheel是Android平臺上使用廣泛的滾輪選擇器,可用于實現日期時間選擇器,省市區三級選擇菜單等等。在最美時光這個app里面是作為日期時間選擇器使用,效果如下所示:

最美應用:從 Android 研發工程師的角度之“最美時光”

7. 現代的I/O操作函數庫okio

okio作為java.io和java.nio的補充,是由square公司開發的一個函數庫,使得開發者可以更方便的訪問,存儲和處理數據。一開始是作為okhttp的一個組件存在的,當然我們也可以單獨使用它。

8. 類型安全的REST客戶端Retrofit

Retrofit是將REST API轉換成Java接口的一個開源函數庫,它要求服務器API接口遵循REST規范。它基于注解使得代碼變得很簡潔,Retrofit默認情況下使用 GSON作為JSON解析器,使用OkHttp實現網絡請求,三者通常配合使用,當然我們也可以將這兩者替換成其他解析函數庫。

9. 下拉刷新組件Android-PullToRefresh

Android平臺上廣泛使用的下拉刷新組件,Github上star五千多,目前不再維護。支持的下拉刷新控件有:

  • ListView
  • ExpandableListView
  • GridView
  • WebView
  • ScrollView
  • HorizontalScrollView
  • ViewPager

10. 圖片異步加載緩存函數庫Android-Universal-Image-Loader

這個函數庫簡稱UIL,是一個功能強大靈活且高度可自定義的用于加載,緩存和顯示圖片的開源函數庫,它提供一系列配置選項,并能很好的控制圖片加載和緩存的過程。

主要特性有:

  • 同步或者異步的多線程圖片加載
  • 高度可自定義:線程池,下載器,解碼器,內存和磁盤緩存,圖片顯示選項等等
  • 每張圖片的顯示支持多種自定義選項:默認存根圖片,緩存切換,解碼選項,Bitmap處理和顯示等
  • 圖片可緩存在內存或者磁盤(設備的文件系統或者SD卡)上
  • 可實時監聽圖片加載流程,包括下載進度。

使用的第三方SDK

1. 小米推送(MiPush)

小米推送(MiPush)是小米公司為開發者提供的消息推送服務,通過在云端和客戶端之間建立一條穩定、可靠的長連接,為開發者提供向客戶端應用推送實時消息的服務,幫助開發者有效地拉動用戶活躍。

2. 友盟統計分析SDK

友盟統計分析平臺是國內最大的移動應用統計分析平臺。我們幫助移動應用開發商統計和分析流量來源、內容使用、用戶屬性和行為數據,以便開發商利用數據進行產品、運營、推廣策略的決策。

3. 友盟用戶反饋SDK

友盟用戶反饋SDK兩行代碼實現開發者和用戶輕松高效溝通。收集用戶建議,了解用戶需求,解決用戶問題,全在應用之內。

4. 新浪微博SDK

微博 Android 平臺 SDK 為第三方應用提供了簡單易用的微博API調用服務,使第三方客戶端無需了解復雜的驗證機制即可進行授權登陸,并提供微博分享功能,可直接通過微博官方客戶端分享微博。

分析與總結

最美時光app用到的底層函數庫基本上遵循 Android開發者必知的5個開源庫 這篇文章介紹的函數庫進行搭建。技術選型中規中矩,都是一些成熟穩定且常見的函數庫,避免了開發人員流動造成的代碼熟悉成本,團隊新成員能夠較快上手,而 且也避免了開源庫隱藏的bug可能造成的版本delay,因為越是成熟的開源庫社區越成熟,bug也越少,就算出現新的bug,也能很快得到解決。

對于規模較小的團隊,我們建議技術選型時盡量選擇成熟的框架,特別是對初創公司。當公司和團隊發展到一定階段后,可以適時的引入新技術或者新框 架,激活團隊成員的技術敏感度。在大公司中,一般存在基礎架構組這樣一個團隊,他們服務于全公司各個產品線,為其提供基礎能力建設。當然對于團隊成員整體 技術水平都很高的團隊來說,就算是初創公司,也有很多拋棄成熟穩定的技術或框架,轉而選擇新崛起的技術或者框架,因為往往新技術或框架相比成熟的技術或者 框架而言更優,雖然可能存在更多的隱藏bug。說到底,技術選型是公司規模和團隊素質的一個綜合選擇。

國外開發者對新技術的接受度和敏感度遠高于國內開發者,這一點是毋庸置疑的,下一篇文章我們將來看看德國出品的一款廚房故事app,可以很容易看到技術選型上面的差異化。

文末攝影鑒賞

最美應用:從 Android 研發工程師的角度之“最美時光”

 本文由用戶 碼頭工人 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!