Android開發人員必知的5個開源庫

來源:互聯網
上載者:User

標籤:

摘要:過去的時間裡,Android開發逐步走向成熟。而無論出現多少Android相關的開發工具,我們每天使用的大量開源庫卻始終是不可或缺的。這裡,向大家介紹的是,這個任勞任怨的大家庭中,最受開發人員喜愛的五個Android庫。

過去的時間裡,Android開發逐步走向成熟,一個個與Android相關的開發工具也層出不窮。不過,在面對各種新鮮事物時,不要忘了那些我們每天使用的大量開源庫。在這裡,向大家介紹的就是,在這個任勞任怨的大家庭中,最受開發人員喜愛的五個Android庫。希望通過對它們的瞭解,能夠對你的開發工作有所協助。


1. GSON

Gson是Google提供的用來在Java對象和JSON資料之間進行映射的Java類庫。可用於將Java對象轉換成對應的JSON表示,也可以將JSON字串轉換成一個等效的Java對象。如果與API打交道的話,那麼這將會是你經常需要的東西。我們主要使用JSON的原因就是,相較XML,輕量級的JSON要簡單的多。

 

// Serialize String userJSON = new Gson().toJson(user);// DeserializeUser user = new Gson().fromJson(userJSON, User.class);
2. RETROFIT

 

就如它網站上的介紹“Retrofit將你的REST API變為Java介面”一樣,Retrofit把REST API返回的資料轉化為Java對象方便操作,對於在項目中組織API調用,是一個不錯的解決方案。其要求方法和相對URL都帶有註解,使得代碼變得更加簡潔。使用註解,你可以很容易的添加一個請求主體,操縱URL或標頭檔,並添加查詢參數。除此之外,每個函數可以定義為同步或非同步,具有傳回值的函數為同步執行,而非同步函數沒有傳回值且最後一個參數為Callback對象。

 

public interface RetrofitInterface {    // asynchronously with a callback    @GET("/api/user")    User getUser(@Query("user_id") int userId, Callback<User> callback);    // synchronously    @POST("/api/user/register")    User registerUser(@Body User user);}// exampleRetrofitInterface retrofitInterface = new RestAdapter.Builder()            .setServer(API.API_URL).build().create(RetrofitInterface.class);// fetch user with id 2048retrofitInterface.getUser(2048, new Callback<User>() {    @Override    public void success(User user, Response response) {    }    @Override    public void failure(RetrofitError retrofitError) {    }});
Retrofit預設情況下使用的是GSON,所以無需自訂解析,同時還支援其他轉換器。

 

3. EVENTBUS

EventBus是用於簡化應用中各個組件之間通訊的一個庫。比如從一個Activity發送訊息到一個正在啟動並執行服務,亦或是片段之間簡單的互動。而下面使用的樣本,就是如果網路連接丟失,該如何通知一個活動:

 

public class NetworkStateReceiver extends BroadcastReceiver {    // post event if there is no Internet connection    public void onReceive(Context context, Intent intent) {        super.onReceive(context, intent);        if(intent.getExtras()!=null) {            NetworkInfo ni=(NetworkInfo) intent.getExtras().get(ConnectivityManager.EXTRA_NETWORK_INFO);            if(ni!=null && ni.getState()==NetworkInfo.State.CONNECTED) {                // there is Internet connection            } else if(intent                .getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY,Boolean.FALSE)) {                // no Internet connection, send network state changed                EventBus.getDefault().post(new NetworkStateChanged(false));            }}// eventpublic class NetworkStateChanged {    private mIsInternetConnected;    public NetworkStateChanged(boolean isInternetConnected) {        this.mIsInternetConnected = isInternetConnected;    }    public boolean isInternetConnected() {        return this.mIsInternetConnected;    }}public class HomeActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        EventBus.getDefault().register(this); // register EventBus    }    @Override    protected void onDestroy() {        super.onDestroy();        EventBus.getDefault().unregister(this); // unregister EventBus    }    // method that will be called when someone posts an event NetworkStateChanged    public void onEventMainThread(NetworkStateChanged event) {        if (!event.isInternetConnected()) {            Toast.makeText(this, "No Internet connection!", Toast.LENGTH_SHORT).show();        }    }}
4. ACTIVEANDROID

 

ActiveAndroid算是一個輕量級的ORM(對象關係映射),讓你無需編寫一個單獨的SQL語句,就可以儲存和檢索SQLite資料庫記錄。每個資料庫記錄都被包裹整齊地歸為一類,如delete()和save()的方法。

擴充ActiveAndroid Model的對象能夠儲存在資料庫裡,如:

 

user.save();
可以輕易替代大型SQL語句:

 

 

INSERT INTO Users (Nickname, Name, Address, City, PostalCode, Country) VALUES (‘Batman‘,‘Bruce W‘,‘Palisades 21‘,‘Gotham‘,‘40000‘,‘USA‘);
擷取所有使用者的例子:

 

 

List<User> users = new Select().from(User.class).execute();
而其對應的SQL語句是這樣:

 

 

SELECT Nickname, Name, Address, City, PostalCode, Country FROM Users;

ActiveAndroid是移除大量,用於和資料庫一同工作的樣板代碼的一個很好的方法。當然除此之外,還有其他開源解決方案,如GreenDAO和ORMLite。

 

5. UNIVERSAL IMAGE LOADER

UIL是是一個開源項目,其目的就是提供一個可重複使用的儀器為非同步映像載入、緩衝和顯示。它的使用很簡單:

 

imageLoader.displayImage(imageUri, imageView);

儘管Picasso擁有更好的API,但其缺乏自訂。而使用UIL構建器幾乎可以配置所有(其中最重要的就是在抓取和緩衝大型圖片時,Picasso會失敗)。

 

良好的開源庫會讓你的開發變得更簡單更快速,而普遍流行的庫通常測試良好且易用使用。在大多情況下,你可以很容易的將它們從Maven中匯入到Android Studio項目裡。將它們添加到相關性的build.gradle 檔案。並且同步之後,在你的應用裡將能夠很好的實現它們。

 

dependencies {    compile ‘com.google.code.gson:gson:2.2.4‘    compile ‘com.squareup.okhttp:okhttp:1.3.0‘    compile ‘com.squareup.retrofit:retrofit:1.3.0‘    compile ‘de.greenrobot:eventbus:2.2.+‘    compile ‘com.nostra13.universalimageloader:universal-image-loader:1.9.1‘}   

Android開發人員必知的5個開源庫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.