Enviar búsqueda
Cargar
RxJava on Android
•
27 recomendaciones
•
16,245 vistas
yo_waka
Seguir
RxJava NightのLTで発表した資料です。
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 17
Descargar ahora
Descargar para leer sin conexión
Recomendados
freee社でのReactiveCocoa活用例
freee社でのReactiveCocoa活用例
yo_waka
var RAC3 = ReactiveCocoa + Swift @ ReactiveCocoa Tokyo #rac_tokyo 10/18
var RAC3 = ReactiveCocoa + Swift @ ReactiveCocoa Tokyo #rac_tokyo 10/18
Syo Ikeda
Sansan様 登壇資料
Sansan様 登壇資料
Daisuke Nagata
Starting java fx
Starting java fx
Kazuhiro Eguchi
React+TypeScriptもいいぞ
React+TypeScriptもいいぞ
Mitsuru Ogawa
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
y_taka_23
React入門-JSONを取得して表示する
React入門-JSONを取得して表示する
regret raym
Wpfと非同期
Wpfと非同期
yone64
Recomendados
freee社でのReactiveCocoa活用例
freee社でのReactiveCocoa活用例
yo_waka
var RAC3 = ReactiveCocoa + Swift @ ReactiveCocoa Tokyo #rac_tokyo 10/18
var RAC3 = ReactiveCocoa + Swift @ ReactiveCocoa Tokyo #rac_tokyo 10/18
Syo Ikeda
Sansan様 登壇資料
Sansan様 登壇資料
Daisuke Nagata
Starting java fx
Starting java fx
Kazuhiro Eguchi
React+TypeScriptもいいぞ
React+TypeScriptもいいぞ
Mitsuru Ogawa
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
y_taka_23
React入門-JSONを取得して表示する
React入門-JSONを取得して表示する
regret raym
Wpfと非同期
Wpfと非同期
yone64
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
Tomohiro Kumagai
scala-kaigi1-sbt
scala-kaigi1-sbt
Kenji Yoshida
SQLQL とは!?
SQLQL とは!?
yancya
REACT & WEB API
REACT & WEB API
Shigeru Kondoh
Rx java x retrofit
Rx java x retrofit
Shun Nakahara
明日から使える Java SE 7
明日から使える Java SE 7
Yuichi Sakuraba
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
Toshiaki Maki
SQLQL は GraphQL にとってなんなのか
SQLQL は GraphQL にとってなんなのか
yancya
C#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive Extensions
Yoshifumi Kawai
Spring Fest 2018 Spring Bootで作るRESTful Web Service
Spring Fest 2018 Spring Bootで作るRESTful Web Service
WataruOhno
Retrofit2 &OkHttp でAndroidのHTTP通信が快適だにゃん
Retrofit2 &OkHttp でAndroidのHTTP通信が快適だにゃん
Yukari Sakurai
はじめての Gatling
はじめての Gatling
Naoya Nakazawa
Unit testing JavaScript with JUnit/JavaFX
Unit testing JavaScript with JUnit/JavaFX
Shinya Mochida
Riot.js と戦った話 (8月26日 oRo LT 会)
Riot.js と戦った話 (8月26日 oRo LT 会)
kata shin
Spring と TDD
Spring と TDD
Takeshi Ogawa
OpenStack API
OpenStack API
Akira Yoshiyama
linq.js - Linq to Objects for JavaScript
linq.js - Linq to Objects for JavaScript
Yoshifumi Kawai
SpringOne Platform 2016 報告会「A Lite Rx API for the JVM」/ 井口 貝 @ SmartNews, Inc.
SpringOne Platform 2016 報告会「A Lite Rx API for the JVM」/ 井口 貝 @ SmartNews, Inc.
SmartNews, Inc.
React Native GUIDE
React Native GUIDE
dcubeio
Rpscala18th
Rpscala18th
nanjakkun
実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡
実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡
心 谷本
Introduction to Retrofit and RxJava
Introduction to Retrofit and RxJava
Fabio Collini
Más contenido relacionado
La actualidad más candente
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
Tomohiro Kumagai
scala-kaigi1-sbt
scala-kaigi1-sbt
Kenji Yoshida
SQLQL とは!?
SQLQL とは!?
yancya
REACT & WEB API
REACT & WEB API
Shigeru Kondoh
Rx java x retrofit
Rx java x retrofit
Shun Nakahara
明日から使える Java SE 7
明日から使える Java SE 7
Yuichi Sakuraba
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
Toshiaki Maki
SQLQL は GraphQL にとってなんなのか
SQLQL は GraphQL にとってなんなのか
yancya
C#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive Extensions
Yoshifumi Kawai
Spring Fest 2018 Spring Bootで作るRESTful Web Service
Spring Fest 2018 Spring Bootで作るRESTful Web Service
WataruOhno
Retrofit2 &OkHttp でAndroidのHTTP通信が快適だにゃん
Retrofit2 &OkHttp でAndroidのHTTP通信が快適だにゃん
Yukari Sakurai
はじめての Gatling
はじめての Gatling
Naoya Nakazawa
Unit testing JavaScript with JUnit/JavaFX
Unit testing JavaScript with JUnit/JavaFX
Shinya Mochida
Riot.js と戦った話 (8月26日 oRo LT 会)
Riot.js と戦った話 (8月26日 oRo LT 会)
kata shin
Spring と TDD
Spring と TDD
Takeshi Ogawa
OpenStack API
OpenStack API
Akira Yoshiyama
linq.js - Linq to Objects for JavaScript
linq.js - Linq to Objects for JavaScript
Yoshifumi Kawai
SpringOne Platform 2016 報告会「A Lite Rx API for the JVM」/ 井口 貝 @ SmartNews, Inc.
SpringOne Platform 2016 報告会「A Lite Rx API for the JVM」/ 井口 貝 @ SmartNews, Inc.
SmartNews, Inc.
React Native GUIDE
React Native GUIDE
dcubeio
Rpscala18th
Rpscala18th
nanjakkun
La actualidad más candente
(20)
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
scala-kaigi1-sbt
scala-kaigi1-sbt
SQLQL とは!?
SQLQL とは!?
REACT & WEB API
REACT & WEB API
Rx java x retrofit
Rx java x retrofit
明日から使える Java SE 7
明日から使える Java SE 7
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
SQLQL は GraphQL にとってなんなのか
SQLQL は GraphQL にとってなんなのか
C#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive Extensions
Spring Fest 2018 Spring Bootで作るRESTful Web Service
Spring Fest 2018 Spring Bootで作るRESTful Web Service
Retrofit2 &OkHttp でAndroidのHTTP通信が快適だにゃん
Retrofit2 &OkHttp でAndroidのHTTP通信が快適だにゃん
はじめての Gatling
はじめての Gatling
Unit testing JavaScript with JUnit/JavaFX
Unit testing JavaScript with JUnit/JavaFX
Riot.js と戦った話 (8月26日 oRo LT 会)
Riot.js と戦った話 (8月26日 oRo LT 会)
Spring と TDD
Spring と TDD
OpenStack API
OpenStack API
linq.js - Linq to Objects for JavaScript
linq.js - Linq to Objects for JavaScript
SpringOne Platform 2016 報告会「A Lite Rx API for the JVM」/ 井口 貝 @ SmartNews, Inc.
SpringOne Platform 2016 報告会「A Lite Rx API for the JVM」/ 井口 貝 @ SmartNews, Inc.
React Native GUIDE
React Native GUIDE
Rpscala18th
Rpscala18th
Destacado
実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡
実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡
心 谷本
Introduction to Retrofit and RxJava
Introduction to Retrofit and RxJava
Fabio Collini
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
Ken Morishita
RxJava初心者の私が良いと思ったやり方、素敵だと思った資料など
RxJava初心者の私が良いと思ったやり方、素敵だと思った資料など
Ryota Murohoshi
2 презентация rx java+android
2 презентация rx java+android
STEP Computer Academy (Zaporozhye)
Reactive Android: RxJava and beyond
Reactive Android: RxJava and beyond
Fabio Tiriticco
RxJava for Android - GDG and DataArt
RxJava for Android - GDG and DataArt
Constantine Mars
RxJava on Android
RxJava on Android
Dustin Graham
The Mayans Lost Guide to RxJava on Android
The Mayans Lost Guide to RxJava on Android
Fernando Cejas
RxJava in practice
RxJava in practice
Javier Gamarra
RxJava for Android - GDG DevFest Ukraine 2015
RxJava for Android - GDG DevFest Ukraine 2015
Constantine Mars
20141116 jjug ccc_2014_keynote1_public
20141116 jjug ccc_2014_keynote1_public
Yoshiharu Hashimoto
Intro to Functional Programming with RxJava
Intro to Functional Programming with RxJava
Mike Nakhimovich
JJUG CCC 2014 fall Javaが見るニュータイプの夢
JJUG CCC 2014 fall Javaが見るニュータイプの夢
なおき きしだ
Reactive programming with Rxjava
Reactive programming with Rxjava
Christophe Marchal
Introduction to rx java for android
Introduction to rx java for android
Esa Firman
Rxjava 介紹與 Android 中的 RxJava
Rxjava 介紹與 Android 中的 RxJava
Kros Huang
Practical RxJava for Android
Practical RxJava for Android
Tomáš Kypta
Headless fragments in Android
Headless fragments in Android
Ali Muzaffar
Reactive Programming for a demanding world: building event-driven and respons...
Reactive Programming for a demanding world: building event-driven and respons...
Mario Fusco
Destacado
(20)
実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡
実例Javaトラブルシューティング! 〜稼働中のシステムを立て直した半年間の軌跡
Introduction to Retrofit and RxJava
Introduction to Retrofit and RxJava
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
RxJava初心者の私が良いと思ったやり方、素敵だと思った資料など
RxJava初心者の私が良いと思ったやり方、素敵だと思った資料など
2 презентация rx java+android
2 презентация rx java+android
Reactive Android: RxJava and beyond
Reactive Android: RxJava and beyond
RxJava for Android - GDG and DataArt
RxJava for Android - GDG and DataArt
RxJava on Android
RxJava on Android
The Mayans Lost Guide to RxJava on Android
The Mayans Lost Guide to RxJava on Android
RxJava in practice
RxJava in practice
RxJava for Android - GDG DevFest Ukraine 2015
RxJava for Android - GDG DevFest Ukraine 2015
20141116 jjug ccc_2014_keynote1_public
20141116 jjug ccc_2014_keynote1_public
Intro to Functional Programming with RxJava
Intro to Functional Programming with RxJava
JJUG CCC 2014 fall Javaが見るニュータイプの夢
JJUG CCC 2014 fall Javaが見るニュータイプの夢
Reactive programming with Rxjava
Reactive programming with Rxjava
Introduction to rx java for android
Introduction to rx java for android
Rxjava 介紹與 Android 中的 RxJava
Rxjava 介紹與 Android 中的 RxJava
Practical RxJava for Android
Practical RxJava for Android
Headless fragments in Android
Headless fragments in Android
Reactive Programming for a demanding world: building event-driven and respons...
Reactive Programming for a demanding world: building event-driven and respons...
Similar a RxJava on Android
RxSwiftのデータバインディングだけ
RxSwiftのデータバインディングだけ
Hironytic
Rx swift,Repro framewolrk
Rx swift,Repro framewolrk
Daisuke Nagata
Xamarin で ReactiveUI を使ってみた
Xamarin で ReactiveUI を使ってみた
Hironov OKUYAMA
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
Yuta Matsumura
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
Toshiyuki Ienaga
Isomorphic web development with scala and scala.js
Isomorphic web development with scala and scala.js
TanUkkii
第4回REST勉強会 RequireJS編
第4回REST勉強会 RequireJS編
ksimoji
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
Hiroyuki Ohnaka
はじめよう Backbone.js
はじめよう Backbone.js
Hiroki Toyokawa
JavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJava
なおき きしだ
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
david9142
R5 3 type annotation
R5 3 type annotation
EIICHI KIMURA
var RAC3 = ReactiveCocoa + Swift
var RAC3 = ReactiveCocoa + Swift
Syo Ikeda
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
Kohei Asai
勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発
Kazuki Nakajima
Apache geode at-s1p
Apache geode at-s1p
Masaki Yamakawa
Om Next ~React.jsを超えて
Om Next ~React.jsを超えて
Kazuki Tsutsumi
実践 NestJS
実践 NestJS
Ayumi Goto
Java EE8 Report
Java EE8 Report
Norito Agetsuma
Tech talk salesforce mobile sdk
Tech talk salesforce mobile sdk
Kazuki Nakajima
Similar a RxJava on Android
(20)
RxSwiftのデータバインディングだけ
RxSwiftのデータバインディングだけ
Rx swift,Repro framewolrk
Rx swift,Repro framewolrk
Xamarin で ReactiveUI を使ってみた
Xamarin で ReactiveUI を使ってみた
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
Isomorphic web development with scala and scala.js
Isomorphic web development with scala and scala.js
第4回REST勉強会 RequireJS編
第4回REST勉強会 RequireJS編
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
はじめよう Backbone.js
はじめよう Backbone.js
JavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJava
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
R5 3 type annotation
R5 3 type annotation
var RAC3 = ReactiveCocoa + Swift
var RAC3 = ReactiveCocoa + Swift
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発
Apache geode at-s1p
Apache geode at-s1p
Om Next ~React.jsを超えて
Om Next ~React.jsを超えて
実践 NestJS
実践 NestJS
Java EE8 Report
Java EE8 Report
Tech talk salesforce mobile sdk
Tech talk salesforce mobile sdk
RxJava on Android
1.
RxJava on Android
2014/10/28 @yo_waka
2.
はじめまして 若原 祥正
@yo_waka • freeeという会計サービスの会社で Android/iOSアプリを作っています
3.
ちょっとだけ宣伝 • 個人事業主の確定申告、
小規模法人の決算をもっと カンタンに • PC,モバイルはこだわらず、 どこでもどのデバイスでも帳 簿をつけられるよ
4.
RxJavaの使いどころ • MVVMのつなぎとして使っています
• FragmentからViewの状態変更を監視してコール バック実行 • ViewModelからAPIリクエストの結果を Fragmentに返す • ViewModelの状態をFragmentに反映させる ! • それぞれのインターフェースをObservableで統一
5.
RxJavaでMVVM Observable Activity/
ViewModel Model Fragment Observable Observable CustomView API Client
6.
API Client •
APIを叩いた結果をObservableで返す protected Observable<String> request(final int method, final String path) { return Observable.create(new RequestSubscriber(method, path)) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()); } // Observable.OnSubscribeを実装したクラスはObservableにできる public class RequestSubscriber implements Observable.OnSubscribe<String> { @Override public void call(final Subscriber<? super String> subscriber) { // リクエストのコールバックで // subscriber.onNext(string), subscriber.onCompleted() を呼ぶ } }
7.
ViewModel • APIクライアントの結果を処理するObservableを
返す public Observable<Item> getItems(String name) { return apiClient.request(Request.Method.POST, API_URL) .map(new GettingItemFunc()) /* doOnNextの前に処理を挟む */ .doOnError(new ErrorHandler()); /* エラー処理 */ } // callメソッドに渡す引数の数に応じて、Func0~Nまであるよ! private class GettingItemsFunc implements Func1<String, List<Item>> { @Override public List<Item> call(String jsonResponse) { Gson gson = GsonFactory.getInstance(); itemList = gson.fromJson(jsonResponse, ItemList.class); } }
8.
Fragment • APIクライアントの結果を処理するObservableを
返す public Observable<Item> getItems(String name) { return apiClient.request(Request.Method.POST, API_URL) .map(new GettingItemFunc()) /* doOnNextの前に処理を挟む */ .doOnError(new ErrorHandler()); /* エラー処理 */ } private class GettingItemsFunc implements Func1<String, List<Item>> { @Override public List<Item> call(String jsonResponse) { Gson gson = GsonFactory.getInstance(); itemList = gson.fromJson(jsonResponse, ItemList.class); } }
9.
RxAndroidについて
10.
RxAndroid • RxJavaのAndroid向けバインディングを提供して
くれるライブラリ • RxJavaと時を同じくしてio.reactivexに移った • Undocumented!! compile 'io.reactivex:rxandroid:0.22.0'
11.
実行スレッドの指定 • SubscriberとObserverの実行スレッドを指定できる
(AndroidSchedulerというユーティリティも提供) • APIコールなど非同期処理をSubscribeする場合はこい つで Observable.from("one", "two", "three", "four", "five") .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(/* an Observer */);
12.
ハマりどころ • Activity,
Fragment上で実行する場合は注意が必要 • Subscriber実行中に画面回転などが起きると、 Fragmentが破棄された状態でコールバックが実行 されてNullPointerExceptionが起きがち • 気にしていても忘れがちなので何とかしたい
13.
Activity,Fragmentの バインディング •
実行前にactivity.isFinishing()、 fragment.isAdded()をチェック • ライフサイクルを気にせずObserveできて便利 AndroidObservable.bindFragment( // bindActivityもあるよ this, viewModel.getList() ) .subscribeOn(Schedulers.io()) .subscribe(/* an Observer */); // 自動でmainThreadで実行
14.
便利なOperator • OperatorConditionalBinding便利
条件付きObserverをカンタンに作れる falseが返された時は自動でunsubscribe()も呼ばれて素敵 public class Validator implements Func1<SomeClass, Boolean>() { @Override public Boolean call(SomeClass obj) { return obj.isValid(); } }; viewModel.createNew() .subscribe(new Observer<List<Deal>>() { /** do something */ }) .lift(new OperatorConditionalBinding<T, SomeClass>( new SomeClass(), new Validator() ));
15.
便利なOperator • ViewObservableでView,TextView,AdapterView
などのイベントをバインドできる ViewObservable.clicks(view, false).subscribe(new Observer<OnClickEvent>() { @Override public void onNext(OnClickEvent evt) {} }); ViewObservable.text(inputView, false) .delay(1000, TimeUnit.MILLISECONDS) .observeOn(AndroidSchedulers.mainThread()) // これを忘れると動かない .subscribe(new Observer<String>() { @Override public void onNext(String s) {} }); ViewObservable.itemClicks(adapter, false).subscribe(new Observer<OnItemClickEvent>() { @Override public void onNext(OnItemClickEvent evt) {} });
16.
まとめ • RxAndroidはAndroidでRxJavaのお供に
特にAndroidSchedulerは便利 • 用意されているOperatorは便利だけど実装小さい ので自分で作るのと大して変わらない • クラスファイルはどれも小さいので自前のRx実装 の参考にもしやすい • ドキュメントは無いけど
17.
ありがとうございました
Descargar ahora