2016年5月現在の自分のベストプラクティス。今後変わる可能性があります。 全体設計 android-best-practices コーディング規約 Google Java Style Cookpad 開発効率化 AndroidAnnotations UI マテリアルデザイン rey5137/material -LoliPop以前のバージョンでマテリアルデザインを使うためのライブラリ (注意)compileSdkVersionを23にしないとビルドが失敗する。 Rest OkHTTP Retrofit2 - v1からv2への移行期なので気をつける RxAndroid 参考 Retrofit2 + OkHttp + RxAndroid + Jackson + Realm で開発環境構築 ORM gfx/Android-Orma - migration機能/ドキュメントが一番しっかりしている。
2016/3/11にRetrofitが正式にversion2となりました。 アップデートしてみましたが、基本は以下の記述で問題ありません。 パッケージ名とprogurardあたりを修正すればビルドは通ると思います。 import okhttp3.OkHttpClient; import retrofit2.Retrofit; import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory; import retrofit2.converter.jackson.JacksonConverterFactory; import retrofit2.http.GET; import retrofit2.http.Path; import retrofit2.http.Field; import retrofit2.http.FormUrlEncod
この記事はRxJava Advent Calendar 2015 11日目の記事です。 RxJava・RxAndroidの紹介記事の中にはよく「面倒くさいASyncTaskを使わなくて済む」といったRxJavaを非同期処理の代わりとして紹介されています。 もちろん、非同期処理を置き換えられるという点はRxJavaの有効的な使い方の一つですが、RxJavaには他にも便利に使える機能があります。 今回はそれらの機能の一つであるSubjectについて紹介したいと思います。 Subjectとは 短く言うと「SubscriberとObservableの2つの機能を併せ持ったもの」です。 SubscriberにあるようなonNextやonError、onCompleteといったメソッドを呼び出せ、Observableのようにsubscribeメソッドを呼び出すことができます。 Subject<Stri
Retrofit + RxJava (+RxAndroid) で以下のようなちょっと複雑なユースケースはどう書けばよいのかなと調べてみたら defer と onErrorResumeNext を使えばよいんじゃないか、という話 (ただしRetrofitは関係ない話になった)。 参考: retrofit with rxjava handling network exceptions globally ユースケース ユーザ情報を取得するAPIを叩く(認証が必要なAPI) 401が返ってきたら、アクセストークンを再度取得する処理を行う アクセストークンの再取得に成功した場合は、新しいアクセストークンを使って、もとのリクエスト(ユーザ情報の取得)をもう1回行う アクセストークンの再取得に失敗した場合は、ログイン画面に飛ばす 実装 private void getUser() { Observabl
例えば◯秒間操作がなかったらパスキーロック画面を表示する、とかそういうの。普通に作るとタイマーを使って面倒な感じになっちゃいますが、RxJava と RxAndroid を使うととても簡単にできます。 RxJava + RxAnroid の場合 例えば、画面に EditBox と Button があって、「文字列の入力」と「ボタンが押されたか」を監視、◯秒間操作がなかったら××する、という処理をしたい時、RxJava+RxAndroid では以下のように書けます。 public class MyActivity extends Activity { private static final String TAG = "MyActivity"; private Subscription _subscription; @Override protected void onCreate(Bund
はじめに AndroidのRESTクライアントのネットワーク処理と非同期処理について、Volley + Gsonの組み合わせでAsyncTask or AsyncLoaderで別スレッドを作って通信して結果を取得してJSONをパースしていたりしていましたが今の流行りはOkHTTP + retorofit + RxAndroidのようなので試してみたいと思います。 本記事のゴール 無料のlivedoor 天気情報APIを使ってデータを受け取る部分までをやりたいと思います。 APIの詳細は以下をご確認ください http://weather.livedoor.com/weather_hacks/ 環境 Android studio 1.4 OkHTTP:HTTP クライアント用のライブラリ Retrofit:REST クライアント用のライブラリ RxAndroid:リアクティブプログラミングを
KotlinでRxAndroidを使ってみたという話。RxAndroidを追加してViewObservableやWidgetObservableを試そうとしたものの、そんなクラスはいないと言われる。。。 公式に書いてあった WidgetObservable and ViewObservable have been rolled into (and improved in) RxBinding. ということで前のバージョンではRxAndroid本体に含まれていたもののいくつかはExtension化したらしい。Schedulerは本体に含まれているので非同期回りのハンドリングで使いたいだけなら本体だけで足りそう。 試してみる Extensionを追加 build.gradleのdependenciesに追加。Kotlin向けのは最後に-kotlinをつけてねと書いてあるので従う。 depend
RxAndroidをv1.0.0に更新していたところ、AppObservableの部分がすべてエラーになっており、それを解消するまでに案外手間取ってしまったのでそのメモ AppObservableとは ActivityやFragment内部でObservable#subscribe()を呼んだ際、そのActivityやFragmentが終了された以降にもonNextやonCompletedが呼ばれてしまうことがあります。 その結果、画面が破棄された状態で画面更新を行おうとしてしまうことでのエラーや、ObservableがActivityやFragmentへの強参照を持ったままになってしまうことによるメモリリークが発生してしまいます。 それを防ぐためにonPauseなどで明示的にSubscription#unsubscribe()を呼んであげる必要がありました。 そのunsubscribeの
この記事は2015年08月21日に書かれた記事です。 c88でエンジニア系の本を買って興味を持ったのでRxAndroidを試してみた! RxAndroidとは RxAndroidはRxJavaのAndroid用の拡張モジュールです。 RxJavaは主に非同期処理を行うことが出来るライブラリです。 またObserverパターンに踏襲しているため、サードパーティーのライブラリとの連携も可能です。 ECMA6からJavascriptに標準搭載される予定のPromiseみたいなものです。 ここではPromise.whenみたいなことをやろうとしてます。 jQueryを使うとこんな感じです。javascriptは簡単ですね var baseUrl = "http://api.openweathermap.org/data/2.5/weather?q="; $.when( $.getJSON(base
https://github.com/gfx/RxT4A これは何 RxAndroidのフォーク RxBindingの機能は実装しない 動機 RxAndroidの先行きが不透明 社内で作ってるRxJava用ユーティリティを公開したい(未着手) RxJavaのベストプラクティスやバッドくラクティスを example/ に提供したい(未着手) 提供しているもの AndroidSchedulers - main threadで実行するスケジューラ AndroidCompositeSubscription - CompositeSubscription をAndroidコンポーネントで使いやすくしたもの OperatorAddToCompositeSubscription - method chain中に AndroidCompositeSubscription#add() をするためのオペレータ
※これもう大分古いので AndroidでJava8環境 2016 - visible true も御覧ください。 はじめに RxAndroid(というかRxJava)とRetrolambdaでそろそろ大体Java8な環境でAndroidアプリケーションが開発出来るのではないかと考えて試してみた。 2014年4月頃のRetrolambdaはまだ1.1.4とかでlambdaをおまけ程度に使える程度で「あー戯れって感じねはいはい」という事でスルーしていたんだけど、最近久しぶりに覗いたら1.8.0まで育っていてTry-with-resources*1やMethod referencesがサポートされていた。 また、RxJavaは1.0.0が11月にリリースされて実用段階に入ってきており、Java8のStream APIを概ね補完する様な機能を持っている。 更にAndroidでRxJavaを扱うため
「チェックAがONならば、項目Bは入力必須とする」という Validation を RxJava + RxAndroid でやるAndroidRxJavaRxAndroid 例えばショッピングサイトとかの発送先指定のフォーム『登録されている住所とは違う住所に送りたい時、「別の住所に送る」をチェックする、すると「住所2」が必須入力となり、入力するまで次へ進めない』的なちょっと込み入ったValidationをReactive ExtensionsのJava版、RxJavaとRxAndroidでやってみました。 動作イメージ まずいきなり動作結果から。 住所1は入力必須。 住所2は「住所2へ配送する」がチェックされている場合のみ、入力必須。 必須項目が入力されていない場合はボタンを押せない こんな仕様です。 実装 @Override protected void onCreate(Bundle
はじめに @rejuspotaroさんの関数型言語を学ぶことは実務でどう役に立ったかを見てRxJavaを使ってみたくなりました。また、iOSのSwiftとAndroidのGroovyを見て、RxJavaをAndroidで使うなら、Groovyでだなと思いました。 また、上記の記事では、言及されていませんでしたがRxAndroidというものがあるようです。Viewのクリックのストリームや、EditTextの変更のストリームを生成するメソッドが用意されているみたいです。 今まで私は、RxJavaをちょっと試してみるならGroovy(これとこれ)とか、RxGroovyについて投稿していましたが、今回やっとRxAndroid、RxJavaをGroovyで使ってみたいと思います。 ボタンクリック回数を表示 ボタンクリックの回数をTextViewに表示したいと思います。(ええ、分かっていますよ。Rx使
REST 処理を扱いやすく実装する Android の REST クライアントのネットワーク処理と非同期処理について、最近流行っている OkHTTP と Retrofit と RxAndroid の組み合わせを使ってみました。これらはそれぞれ次のような機能を提供するライブラリです。 RxJava の Android 版 リアクティブプログラミングを Android で実装するためのライブラリ イベントベースで遅延実行や非同期コールバックなどを実装可能 なお、Retrofit が OkHTTP と RxAndroid の架け橋になってくれるため、組み合わせてシンプルに記述可能になります。 導入 まずはこれら3つのライブラリを Android プロジェクトに導入しましょう。 dependencies { compile 'com.squareup.okhttp:okhttp:2.4.0' co
はじめに 仕事で作っているアプリで非同期処理のコールバックが地獄めいてきて吐きそうになったので そのあたりをバッチリ解決するためのアレコレを模索していた。 そんな折にKeithYokomaさんがQiitaに海外記事の翻訳を公開したのを読んで、一念発起したという具合です。 ReactiveExtensions - 【翻訳】AsyncTask と AsyncTaskLoader を rx.Observable に置き換える - RxJava Android Patterns - Qiita EventBusを使う方法も考えたのだけど、あれはLocalBroadcast使うまでもないときに発動させるのがいいんだろうな、という感想です。 そんなわけで、色々と見たこと・考えたことを備忘録としてまとめました。 参考にしたサイトたち だいたいこれ読んどけばOKみたいなそんな感じです。 入門 Reacti
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く