[解決済み] サブスクライブの結果は使用されません
質問
今日、Android Studio 3.1にアップグレードしたのですが、lintチェックがいくつか追加されたようです。これらのlintチェックの1つは、ワンショットのRxJava2についてです。
subscribe()
の呼び出しは、変数に格納されません。たとえば、Room データベースから全選手のリストを取得する場合です。
Single.just(db)
.subscribeOn(Schedulers.io())
.subscribe(db -> db.playerDao().getAll());
結果、大きな黄色のブロックとこのツールチップが表示されます。
<ブロッククオート
の結果は
subscribe
は使用されません
このようなワンショットのRxコールのベストプラクティスは何ですか?を保持し続けるべきでしょうか?
Disposable
と
dispose()
を完全な形で表示しますか?それとも
@SuppressLint
を作成して、次に進みますか?
これはRxJava2だけに影響するようです(
io.reactivex
)、RxJava (
rx
) には、このlintはありません。
解決方法は?
IDE は、サブスクリプションが破棄されていないときにどのような潜在的効果があるかを知らないので、潜在的に安全でないものとして扱います。たとえば、あなたの
Single
にネットワークコールが含まれている場合、メモリリークを引き起こす可能性があります。
Activity
が実行中に放棄された場合。
を大量に管理するのに便利な
Disposable
を使用することです。
CompositeDisposable
を作成するだけです。
CompositeDisposable
インスタンス変数を作成し、CompositeDisposable に Disposable を追加します。
addTo(compositeDisposable)
をすべてのDisposableに追加してください)。最後に、インスタンスの作成が完了した時点で
compositeDisposable.dispose()
.
これにより、lint の警告がなくなり、また
Disposables
は適切に管理されています。
この場合、コードは次のようになります。
CompositeDisposable compositeDisposable = new CompositeDisposable();
Disposable disposable = Single.just(db)
.subscribeOn(Schedulers.io())
.subscribe(db -> db.get(1)));
compositeDisposable.add(disposable); //IDE is satisfied that the Disposable is being managed.
disposable.addTo(compositeDisposable); //Alternatively, use this RxKotlin extension function.
compositeDisposable.dispose(); //Placed wherever we'd like to dispose our Disposables (i.e. in onDestroy()).
関連
-
[解決済み】Android 8:クリアテキストのHTTPトラフィックが許可されない
-
[解決済み] Androidのgravityとlayout_gravityの違いは何ですか?
-
Gradle の同期に失敗しました。com.android.tools.build:gradle が見つかりませんでした。
-
エラー:未宣言の識別子(AS)の使用
-
[解決済み] アイテムの親を取得する際にエラーが発生しました。AppCompat v23にアップグレードした後、指定された名前に一致するリソースが見つかりません。
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] Android Studioの「assets」フォルダはどこに配置すればいいですか?
-
[解決済み] match_parentとfill_parentの違いは何ですか?
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
AndroidエミュレーターのADBサーバーがACKしない問題
-
Gradle の同期に失敗しました。com.android.tools.build:gradle が見つかりませんでした。
-
gitlab 設定エラー。リモートリポジトリから読み込めなかったか、ホストキーの検証に失敗しました。
-
アンドロイドスタジオでJunitのエラー問題を解決する
-
WeChatとQQは、他のアプリのオープンリストに自分のアプリを追加し、ファイルパスを取得することができます
-
問題 ---- Android ---- ActivityManager: Error: アクティビティクラス{xx/xx.MainActivity}が存在しない
-
Android ProgressBarのスタイルカラーを変更する
-
android bluetooth--Bluetooth on、検索、ペアリング、接続
-
AndroidStudioのショートカット 検索/置換
-
Android studio 制約レイアウト ConstraintLayout