2016 Top 10 Android Library

過去的 2016 年,開源社區異常活躍,不少我的與公司爭相開源本身的項目,讓人眼花繚亂,然而有些項目只是曇花一現,有些項目卻持久創造價值,爲開發者提供了極大的便利,這些終究由時間來判斷。今天,我就來整理一篇,我我的認爲的 2016 年對 Android 開發有巨大幫助的,甚至改變了 Android 開發方式的開源庫,可是,僅限我的認爲,不具備任何權威性。java

1. RxJava

地址:github.com/ReactiveX/R…android

2016 年 Android 界最火的莫過於 RxJava 了,若是你還不知道 RxJava,你所在公司,或者你所在的項目尚未使用 RxJava,那真的是有點 out 了,RxJava 不只大大簡化了代碼,甚至能夠說改變了咱們的開發方式。git

RxJava 是一種函數式、響應式的異步操做庫,它讓你的代碼更加簡潔,真正的讓你的代碼寫到爽!因爲 RxJava 用過的都說好,基於此,GitHub 上衍生了一堆好比 RxAndroid、RxBus、RxPermission 等之類的開源庫,足以說明它的影響力。github

關於 RxJava 的文章網上一大堆,它的使用方法與好處我就很少說了,請自行去搜索瞭解,總之,身爲 Android 開發者,到如今你還不知道 RxJava,簡直了!數據庫

2. Retrofit

地址:github.com/square/retr…設計模式

若是有人問我,Android 界最好用的網絡請求庫是什麼?在以前可能會有人回答 android-async-http、Volley、OkHttp(準確說,OkHttp 是一個 http 請求客戶端) 之類的,可是 16 年事後,我會告訴你 Retrofit 是最好用的網絡請求庫。api

Retrofit 徹底 RESTful 風格的 api 網絡請求庫,解耦更完全,源碼設計超多的設計模式,值得你們學習,另外擴展性很是好,支持各類配置來知足你的需求,最最重要的是,若是你的項目使用了 RxJava,那麼 Retrofit 能夠完美結合,我只能說 Prefect!再次驗證了那句話:Square 出品,必屬精品!ruby

3. EventBus

地址:github.com/greenrobot/…微信

試想這麼一個場景,在 A 頁面打開 B 頁面,而後 B 頁面打開了 C 頁面,C 頁面又打開了 D 頁面,並且還須要傳遞參數,在 D 頁面修改了一些信息,而後這些信息更新以後,A、B、C 頁面極可能都須要對應的進行數據更新,碰到這種需求該怎麼處理?網絡

有人說用 startActivityForResult(),你能夠試下,有多麼難處理,還有人想到用廣播,這個固然能夠,由於廣播是全局的,主要進行註冊均可以通知到每個頁面,可是我很不喜歡用廣播,每次用廣播都要走那一套流程,很麻煩,並且很重。

而若是你知道 Eventbus,那麼一切都很是的簡單。

EventBus 是一個事件管理平臺,以事件驅動的方式來簡化事件傳遞邏輯,能夠把它想象成輕量級的 BroadcastReceiver,不過,EventBus 並非 16 年纔開始進入大衆視野的,很早就開源了,只是這個庫太實用了,時至今日,它仍然很火,使用起來很是方便。

值得注意的是:EventBus 當然好用,可是不要過分使用,由於一旦你的代碼大量使用 EventBus,會導致代碼可讀性稍差,並且出了問題不太好定位。因此建議只在特定的場景使用,切莫貪杯!

4. Glide、Fresco

圖片加載可能跟網絡請求同樣,基本是全部 App 開發必備的功能,選擇一款成熟穩定的圖片加載庫重要性不言而喻,目前主流的圖片加載有 Picasso、Glide、Fresco,Glide 是 Google 員工基於 Picasso 基礎上進行開發的,因此天然各方面比 Picasso 更有優點,並且支持 Gif,因此推薦你們優先選擇 Glide 庫,官方地址:

github.com/bumptech/gl…

若是你的項目須要大量使用圖片,好比是相似 Instagram 一類的圖片社交 App ,那麼推薦使用 Fresco。Fresco 是 Facebook 做品,關於內存的佔用優化更好,可是同時包也更大,門檻也更高,初級工程師不建議使用。官方地址:

github.com/facebook/fr…

這兩款圖片加載庫,基本算是在 16 年使用最多,被承認最高的兩個圖片加載庫了。

5. LeakCanary

地址:github.com/square/leak…

開發者最關心的除了完成功能外,其次就是會不會形成內存泄露了,其實檢測內存泄露在 Java 領域有不少種方法與工具,可是針對 Android 都不夠方便,而良心公司 Square 開源了一款針對 Android 平臺的內存泄露檢測工具 LeakCanary,集成簡單,使用方便,平時測試的過程當中就自動記錄了內存泄露的位置,甚至幫你定位到代碼級別,強烈推薦。

6. ButterKnife

地址:github.com/JakeWharton…

我想應該沒有人沒聽過這個庫了吧?ButterKnife 是 Android 之神 JakeWharton 的大做,已經開源了很長時間,然而在 2016 年它的使用熱度依然不減,它可讓你避免無休止的 findViewById() 代碼,具體用法我就很少說了,使用起來比較簡單。

7. Realm

地址:realm.io/

說到 Realm 不得不提到一個 ORM 的概念。何爲 ORM 呢?ORM 是 Object Relation Mapping 的縮寫,翻譯過來就是對象關係映射。這是相對於數據庫的,咱們知道 Android 中使用的數據庫是 SQLite,並且 Android SDK 自帶操做數據庫的接口,而實際咱們在使用的過程每每須要把查詢的數據轉換到一個 Java Object,也就是所謂的 Model,好比通常是這樣:

public User selectWithId(int id) {
    User user = null;
    Cursor cursor = db.rawQuery("select * from users where id = ?", new String[]{id});
    if (cursor != null && cursor.moveToFirst()) {
        int age = cursor.getInt(cursor.getColumnIndex("age"));
        String userName = cursor.getString(cursor.getColumnIndex("user_name"));
        ...
        user = new User(age, userName, ...);
        cursor.close();
    }
    return user;
}複製代碼

操做起來是否是很麻煩?並且可讀性超差,而有了 ORM 咱們寫代碼可能會是相似這樣:

查詢數據是這樣:

public User getUserById(int id) {
    return RealmResults<User> pups = realm.where(User.class)
                               .lessThan("id", 2)
                               .findAll();
}複製代碼

是否是很是方便?代碼寫起來更像是面向對象,而不是一個個的裸寫 SQL 了,這就是所謂的 ORM。

而 Android 界的 ORM 框架有不少,好比 GreenDao、SugarORM、ActiveAndroid 等等,可是我推薦你們的 ORM 框架以上都不是,是叫作 Realm。

Realm 是一種面向移動端的新型輕量數據庫,並且是開源的,跟 SQLite 徹底不同,性能上秒殺 SQLite,支持 Java、Android、iOS 各平臺,咱們在實際項目中採用過,體驗下來各方面都很不錯,因此推薦你們嘗試下 Realm。

8. Dagger 2

地址:github.com/google/dagg…

依賴注入的概念估計你們都聽過,不理解的不妨搜索瞭解下,Android 領域比較著名的依賴注入庫莫過於 Dagger 了,基於註解,使用起來異常方便。

Dagger 起初是 Square 開源的,後來 Google 在此技術上進行了改進與優化,去除了反射,編譯時進行依賴注入,性能上有大幅提高,取名 Dagger 2,Square 以前開源的 Dagger 已不建議使用。其實以前你們對 Dagger 的關注程度沒有那麼高,通常都是屬於中、高級工程師纔會關注使用,可是 16 年 Android 的架構被提上日程,各類 MVP、MVVM、Clean 架構等討論的較多,而 Dagger 做爲承載這些架構重要的一環被愈來愈多的開發者使用,因此 16 年咱們看到 Dagger 的身影愈來愈多,因此,Dagger 被我列爲 16 年還算是比較火,比較實用的 Top 10 Android Library。

9. android-architecture

地址:github.com/googlesampl…

上面說了,16 年 Android 架構被愈來愈多的開發者關注,國內外關於架構的探討比較活躍,你們熟知的 MVC、MVP、MVVM、Clean 等,就在你們爭執哪一個更好,Android 開發到底該怎樣架構的時候,Google 開源了一個 Android 架構的官方指導,涉及 mvp、mvp-loaders、databinding、mvp-clean、mvp-dagger、mvp-contentproviders、mvp-rxjava 等,分別在各自指定的分支下,有很是大的參考意義,能夠算是 Android 界的一大步。

10. awesome-android-ui

地址:github.com/wasabeef/aw…

Android 開發中除了咱們以上用到的各類實用庫以外,咱們每每還會涉及到各類 UI 效果的實現,對於移動開發,界面開發其中是很重要的一環,而 16 年針對 Android 開發有人開源整理了這麼一個庫,裏面網羅了全部你見過的、沒見過的各類 UI 效果,涉及 Material、Layout、Button、List、ViewPager、Dialog、Menu、Parallax、Progress 等等,並且有相對應的截圖、gif 展現,之後應對設計師各類效果的時候有很大的參考幫助做用。

以上就是我總結的,我我的認爲的,在 2016 年的 Android 開發中,比較實用的、對你的開發有很大幫助的一些 Android Library,除了對大家的開發效率有提高以外,還可以瞭解其原理,閱讀其優秀源碼,參考其代碼設計,是絕佳的一份學習資料,但願每一個人在 2017 年都能在技術上取得很大進步!

本文原創發佈於微信公衆號 AndroidDeveloper,id: googdev,不止技術分享,還有更多扯淡,關注請慎重!

相關文章
相關標籤/搜索