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

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

Join

前面兩個(gè)方法,zip()merge()方法作用在發(fā)射數(shù)據(jù)的范疇內(nèi),在決定如何操作值之前有些場(chǎng)景我們需要考慮時(shí)間的。RxJava的join()函數(shù)基于時(shí)間窗口將兩個(gè)Observables發(fā)射的數(shù)據(jù)結(jié)合在一起。

http://wiki.jikexueyuan.com/project/rxjava/images/chapter6_6.png" alt="" />

為了正確的理解上一張圖,我們解釋下join()需要的參數(shù):

  • 第二個(gè)Observable和源Observable結(jié)合。
  • Func1參數(shù):在指定的由時(shí)間窗口定義時(shí)間間隔內(nèi),源Observable發(fā)射的數(shù)據(jù)和從第二個(gè)Observable發(fā)射的數(shù)據(jù)相互配合返回的Observable。
  • Func1參數(shù):在指定的由時(shí)間窗口定義時(shí)間間隔內(nèi),第二個(gè)Observable發(fā)射的數(shù)據(jù)和從源Observable發(fā)射的數(shù)據(jù)相互配合返回的Observable。
  • Func2參數(shù):定義已發(fā)射的數(shù)據(jù)如何與新發(fā)射的數(shù)據(jù)項(xiàng)相結(jié)合。
  • 如下練習(xí)的例子,我們可以修改loadList()函數(shù)像下面這樣:

    private void loadList(List<AppInfo> apps) {
      mRecyclerView.setVisibility(View.VISIBLE);
    
      Observable<AppInfo> appsSequence =
      Observable.interval(1000, TimeUnit.MILLISECONDS)
                  .map(position -> {
                      return apps.get(position.intValue());
                  });
    
      Observable<Long> tictoc = Observable.interval(1000,TimeUnit.MILLISECONDS);
    
      appsSequence.join(
          tictoc, 
          appInfo -> Observable.timer(2,TimeUnit.SECONDS),
          time -> Observable.timer(0, TimeUnit.SECONDS),
          this::updateTitle)
          .observeOn(AndroidSchedulers.mainThread())
          .take(10)
          .subscribe(new Observer<AppInfo>() {
              @Override
              public void onCompleted() {
                  Toast.makeText(getActivity(), "Here is the list!", Toast.LENGTH_LONG).show();
              }
    
              @Override
              public void onError(Throwable e) {
                  mSwipeRefreshLayout.setRefreshing(false); 
                  Toast.makeText(getActivity(), "Something went wrong!", Toast.LENGTH_SHORT).show();
              }
    
              @Override
              public void onNext(AppInfoappInfo) {
                  if (mSwipeRefreshLayout.isRefreshing()) {
                      mSwipeRefreshLayout.setRefreshing(false);
                  } 
                  mAddedApps.add(appInfo);
                  int position = mAddedApps.size() - 1;
                  mAdapter.addApplication(position, appInfo);
                  mRecyclerView.smoothScrollToPosition(position);
              } 
          });
    }

我們有一個(gè)新的對(duì)象appsSequence,它是一個(gè)每秒從我們已安裝的app列表發(fā)射app數(shù)據(jù)的可觀(guān)測(cè)序列。tictoc這個(gè)Observable數(shù)據(jù)每秒只發(fā)射一個(gè)新的Long型整數(shù)。為了合并它們,我們需要指定兩個(gè)Func1變量:

appInfo -> Observable.timer(2, TimeUnit.SECONDS)

time -> Observable.timer(0, TimeUnit.SECONDS)

上面描述了兩個(gè)時(shí)間窗口。下面一行描述我們?nèi)绾问褂?code>Func2將兩個(gè)發(fā)射的數(shù)據(jù)結(jié)合在一起。

this::updateTitle

結(jié)果如下:

http://wiki.jikexueyuan.com/project/rxjava/images/chapter6_7.png" alt="" />

它看起來(lái)有點(diǎn)亂,但是注意app的名字和我們指定的時(shí)間窗口,我們可以看到:一旦第二個(gè)數(shù)據(jù)發(fā)射了我們就會(huì)將它與源數(shù)據(jù)結(jié)合,但我們用同一個(gè)源數(shù)據(jù)有2秒鐘。這就是為什么標(biāo)題重復(fù)數(shù)字增加的原因。

值得一提的是,為了簡(jiǎn)單起見(jiàn),也有一個(gè)join()操作符作用于字符串然后簡(jiǎn)單的和發(fā)射的字符串連接成最終的字符串。

http://wiki.jikexueyuan.com/project/rxjava/images/chapter6_8.png" alt="" />

上一篇:GroupBy下一篇:Sampling