最美應用-從Android研發project師的角度之[最美時光]

最美應用-從Android研發project師的角度之最美時光

@author ASCE1885的 Github 簡書 微博 CSDNhtml

近期發現最美應用這樣一個站點。它會按期推介一些很是有意思的app,做爲開發人員,每次看到很是棒的app都會從實現角度進行剖析。想着假設是本身將怎樣實現呢?所以,就有了這個系列的文章,旨在從技術選型和架構的角度解讀一些有意思的app。
最美時光是最美應用團隊出品的一個記念日app,用於記錄和分享那些重要的日子,咱們就先從這個開始吧!java

使用的開源函數庫

1. 開源日誌記錄函數庫JakeWharton’s Timber

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

日誌記錄行爲被抽象爲一顆一顆的樹��,好比有打印日誌到Logcat的樹,有打印日誌到文件的樹等等。假設咱們要使用某種類型的樹,首選需要建立一個實例,並調用Timer.plant函數將其種植下來。以後就可以任意使用了。git

2. 輕量級的ORM框架ActiveAndroid

ActiveAndroid是眼下常見的幾個ORM框架之中的一個(除此以外,比較有名的開源解決方式還有GreenDAOORMLite),可以極大的簡化數據庫的使用。使用面向對象的方式管理數據庫,告別手寫SQL的歷史。github

每一個數據庫表都可以被映射爲一個類,開發人員僅僅需使用類似save()或者delete()這種函數就能夠。數據庫

參考文檔:
官方文檔json

3. JSON解析函數庫GSON

GSON是Google出品的函數庫,可以將JSON字符串反序列化爲相應的Java對象。或者反過來將Java對象序列化爲相應的JSON字符串。免去了開發人員手動經過JSONObject和JSONArray逐個JSON字段進行解析的煩惱,也下降了出錯的可能性。加強了代碼的質量。緩存

參考文檔:
官方的用戶指南
第三方的用戶指南安全

4. 點擊漣漪效果控件RippleView

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

5. 現代的HTTP函數庫OkHttp

OkHttp是一個高效的HTTPclient,具備例如如下特性:

  • 支持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裏面是做爲日期時間選擇器使用,效果例如如下所看到的:

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

okio做爲java.io和java.nio的補充。是由square公司開發的一個函數庫,使得開發人員可以更方便的訪問。存儲和處理數據。

一開始是做爲okhttp的一個組件存在的,固然咱們也可以單獨使用它。

8. 類型安全的RESTclientRetrofit

Retrofit是將REST API轉換成Java接口的一個開源函數庫。它要求serverAPI接口遵循REST規範。它基於註解使得代碼變得很是簡潔,Retrofit默認狀況下使用GSON做爲JSON解析器,使用OkHttp實現網絡請求。三者一般配合使用,固然咱們也可以將這二者替換成其它解析函數庫。

參考文檔:
Retrofit官方文檔
高速Android開發系列網絡篇之Retrofit
Retrofit – Java(Android) 的REST 接口封裝類庫
再談RESTAPI最佳實踐
使用Android API最佳實踐
深刻剖析Android網絡開發庫-part1: OkHttp, Volley and Gson

9. 下拉刷新組件Android-PullToRefresh

Android平臺上普遍使用的下拉刷新組件。Github上star五千多,眼下再也不維護。

支持的下拉刷新控件有:

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

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

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

主要特性有:

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

參考文檔:
Android-Universal-Image-Loader 圖片異步載入類庫的使用(超具體配置)
Android 開源框架Universal-Image-Loader全然解析
Android Universal Image Loader 源代碼分析

使用的第三方SDK

1. 小米推送(MiPush)

小米推送(MiPush)是小米公司爲開發人員提供的消息推送服務。經過在雲端和client之間創建一條穩定、可靠的長鏈接,爲開發人員提供向client應用推送實時消息的服務,幫助開發人員有效地拉動用戶活躍。

2. 友盟統計分析SDK

友盟統計分析平臺是國內最大的移動應用統計分析平臺。

咱們幫助移動應用開發商統計和分析流量來源、內容使用、用戶屬性和行爲數據,以便開發商利用數據進行產品、運營、推廣策略的決策。

3. 友盟用戶反饋SDK

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

4. 新浪微博SDK

微博 Android 平臺 SDK 爲第三方應用提供了簡單易用的微博API調用服務,使第三方client無需瞭解複雜的驗證機制就能夠進行受權登錄,並提供微博分享功能,可直接經過微博官方client分享微博。

分析與總結

最美時光app用到的底層函數庫基本上遵循Android開發人員必知的5個開源庫這篇文章介紹的函數庫進行搭建。

技術選型中規中矩。都是一些成熟穩定且常見的函數庫。避免了開發人員流動形成的代碼熟悉成本,團隊新成員可以較快上手,而且也避免了開源庫隱藏的bug可能形成的版本號delay,因爲越是成熟的開源庫社區越成熟,bug也越少,就算出現新的bug。也能很是快獲得解決。

對於規模較小的團隊。咱們建議技術選型時儘可能選擇成熟的框架,特別是對初創公司。當公司和團隊發展到必定階段後。可以適時的引入新技術或者新框架,激活團隊成員的技術敏感度。在大公司中,通常存在基礎架構組這樣一個團隊,他們服務於全公司各個產品線。爲其提供基礎能力建設。固然對於團隊成員整體技術水平都很是高的團隊來講。就算是初創公司。也有很是多拋棄成熟穩定的技術或框架。轉而選擇新崛起的技術或者框架。因爲每每新技術或框架相比成熟的技術或者框架而言更優。儘管可能存在不少其它的隱藏bug。

說究竟。技術選型是公司規模和團隊素養的一個綜合選擇。

國外開發人員對新技術的接受度和敏感度遠高於國內開發人員。這一點是毋庸置疑的,下一篇文章咱們未來看看德國出品的一款廚房故事app。可以很是easy看到技術選型上面的差別化。

文末攝影鑑賞

相關文章
相關標籤/搜索