repeatWhenでfilterを使ってもonCompletedは呼ばれない

掲題の通りです TL;DR Observable#repeatWhen使って複雑な繰り返し判定するときはObservable#filterじゃなくてObservable#takeWhileを使うとonCompletedまで呼ばれる 大量のデータをローカルに同期するAPIがあって、ページングの要領で複数回APIを叩いてすべてのデータを同期するとします。 こんな感じのコードなら動きます。 boolean isLoading = false; public Completable sync() { return Observable.defer(() -> { if (isLoading) { return Observable.empty( »

CompositeSubscriptionは再利用できる

RxJavaの CompositeSubscription は一度 unsubscribe() してしまうと使い回すことができないので毎回インスタンス化しなきゃいけないと思っていたら、clear() というメソッドがあることを知った。 clear() は追加済みの Subscription の unsubscribe は行うが、 CompositeSubscription 自体の状態は変更しないメソッドだ。 これをメインで使うようにしたらちょっと面倒が減りそうな気がする。 すでに unsubscribe() してしまった CompositeSubscription に効果はないので注意が必要だけれども。 @Override public void unsubscribe() { if »

[Android] 夏休みだったので画像を検索してひたすらファボるTwitterアプリつくった

掲題のとおり、Androidアプリを作った。 最初はまったく別の事情のために作り始めたのだけれども、途中でその用事がなかったことになったのでそのまま「夏休みの課題」として仕上げることにした。 名前は「画像検索してファボるやつ」 まずはデモ動画をどうぞ。 見ての通り、設定したキーワードでTwitter検索して、結果をタブ形式で表示するだけのアプリです。アプリからできるアクションはお気に入りだけ。 アプリを作るにあたって設定した要件は下記の通り 画像投稿サービスのAPIを使ったアプリであること 二日間くらいで仕上げること というわけで、 TwitterのAPIを利用して画像を検索、 検索結果をタブで表示し、スワイプで移動でき ひたすらファボれる アプリを作ることにした。 最初はInstagramで作ろうとしたんだけど( #ilovecat をひたすら見るだけのアプリを作りたかった)、ちょっとAPIドキュメントを見た限りだとLikeのAPIが一般には公開されていないようだった。 »

[Android] Bitmap too large to 〜が出た時の対処法

Bitmapを扱っているとたまに下記のようなエラーにぶち当たることがあります。 W/OpenGLRenderer: Bitmap too large to be uploaded into a texture(4000x4000, max=2048x2048) 読んで字の通り、Bitmapが大きすぎて、OpenGLRendererで取り扱えない。 限界は縦横2048pxまでのようです。 解決方法は2つあります。 画像を2048x2048まで縮小する ハードウェアアクセラレーションを無効にする。 サムネイルとかフルサイズで表示する必要がない時は縮小するのが良さそう。 ただ、フルスクリーンで画像を表示してピンチズームとかしたい時は2 »