在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ Retrofit
combineLatest
從列表創(chuàng)建一個Observable
RxJava的與眾不同之處
Schedulers
RxJava觀察者模式工具包
總結(jié)
工具
你什么時候使用觀察者模式?
GroupBy
App架構(gòu)
組合Observables
創(chuàng)建Activity類
StartWith
RX - 從.NET到RxJava
處理耗時的任務(wù)
過濾Observables
向響應(yīng)式世界問好
避免阻塞I/O的操作
Join
有且僅有一次
Schedulers-解決Android主線程問題
轉(zhuǎn)換Observables
啟動引擎
我們的第一個Observable
總結(jié)
StrictMode
Debounce
*map家族
創(chuàng)建RecyclerView Adapter
為什么是Observables?
Merge
再多幾個例子
總結(jié)
Buffer
Window
總結(jié)
Timeout
執(zhí)行網(wǎng)絡(luò)任務(wù)
項目目標
來到Java世界 - Netflix RxJava
獲取我們需要的數(shù)據(jù)
Observable
過濾序列
非阻塞I/O操作
ZIP
總結(jié)
And,Then和When
觀察者模式
Retrofit
Cast
Skip and SkipLast
微軟響應(yīng)式擴展
與REST無縫結(jié)合-RxJava和Retrofit
First and last
RxJava Essentials 中文翻譯版
Switch
ElementAt
總結(jié)
總結(jié)
總結(jié)
Sampling
SubscribeOn and ObserveOn
Subject = Observable + Observer

Retrofit

Retrofit是Square公司專為Android和Java設(shè)計的一個類型安全的REST客戶端。它幫助你輕松地與任意REST API交互,并完美兼容RxJava:所有的JSON響應(yīng)對象都被映射成原始的Java對象,并且所有的網(wǎng)絡(luò)調(diào)用都基于Rxjava Observable這些對象。

使用API文檔,我們可以定義我們從服務(wù)器接收的JSON響應(yīng)數(shù)據(jù)。為了很容易的將JSON響應(yīng)數(shù)據(jù)映射為我們的Java代碼,我們將使用jsonschema2pojo, 這個服務(wù)將靈活地生成所有與JSON響應(yīng)數(shù)據(jù)相映射的Java類。

當我們把所有的Java model準備好后,我們就可以開始建立Retrofit。Retrofi使用標準的Java接口來映射API路由。例如例子中,我們將使用來自API的一個路由,下面是我們Retrofit的接口:

public interface StackExchangeService {
    @GET("/2.2/users?order=desc&sort=reputation&site=stackoverflow")
    Observable<User sResponse> getMostPopularSOusers(@Query("pagesize") int howmany);
}

interface接口只包含一個方法,即getMostPopularSOusers。這個方法用整型howmany作為一個參數(shù)并返回UserResponse的Observable。

當我們有了interface,我們可以創(chuàng)建RestAdapter類,為了更清楚的組織我們的代碼,我們創(chuàng)建一個SeApiManager函數(shù)提供一種更適當?shù)姆绞絹砗蚐tackExchange API交互。

public class SeApiManager {
    private final StackExchangeService mStackExchangeService;

    public SeApiManager() {
        RestAdapter restAdapter = new RestAdapter.Builder()
            .setEndpoint("https://api.stackexchange.com")
            .setLogLevel(RestAdapter.LogLevel.BASIC)
            .build();
        mStackExchangeService = restAdapter.create(StackExchangeService.class);
    }

    public Observable<List<User>> getMostPopularSOusers(int howmany) {
        return mStackExchangeService
        .getMostPopularSOusers(howmany)
        .map(UsersResponse::getUsers)
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread());
    }
}

為了簡化例子,我們不再將這個類設(shè)計為它本該設(shè)計成的單例。使用依賴注入解決方案,如Dagger2,可使代碼質(zhì)量更高。

創(chuàng)建RestAdapter類,需要對客戶端API設(shè)置幾個重要的方面。這個例子中,我們設(shè)置了endpointlog level。由于這個例子中URL只是硬編碼,像這樣使用外部資源來存儲數(shù)據(jù)很重要。避免在代碼中硬編碼字符串是一個好的實踐。

Retrofit把RestAdapter類和我們的API接口綁定在一起后就完成了創(chuàng)建。它返回給我們一個對象用來請求API。我們可以選擇直接暴露這個對象,或者以某種封裝方式來限制對它的訪問。在這個例子中,我們封裝它并只暴露getMostPopularSOusers方法。這個方法執(zhí)行查詢,使用Retrofit解析JSON響應(yīng)數(shù)據(jù)。獲得用戶列表,并返回給訂閱者。如你所見,使用Retrofit、RxJava和Retrolambda,我們幾乎沒有模板代碼:它非常緊湊而且可讀性很高。

現(xiàn)在,我們已經(jīng)有一個API管理者來提供一個響應(yīng)式的方法,它從遠程API獲取數(shù)據(jù)并給I/O調(diào)度器,解析映射最后為我們的消費者提供一個簡潔的用戶列表。

上一篇:工具下一篇:總結(jié)