[解決済み] なぜLiveDataのサブクラスとしてMutableLiveDataが存在するのか?
質問
以下のように表示されます。
MutableLiveData
とは異なり
LiveData
とは
setValue()
と
postValue()
メソッドはpublicであるのに対し
LiveData
では protected になっています。
この変更のために別のクラスを作成する理由、また単にこれらのメソッドを
LiveData
自体でpublicとして定義するのではなく、別のクラスを作る理由は何でしょうか?
一般的に言って、このような形式の継承(特定のメソッドの可視性を高めることが唯一の変更点)はよく知られた慣習であり、(すべてのコードにアクセスできると仮定して)それが有用である可能性のあるシナリオにはどのようなものがあるでしょうか?
どのように解決するのですか?
で
LiveData - Android Developer Documentation
を見ると
LiveData
,
setValue()
&
postValue()
メソッドは公開されません。
一方
MutableLiveData - Android Developer Documentation
を見ると、そのことがわかる。
MutableLiveData
が拡張する
LiveData
の2つのマジックメソッドと、内部で
LiveData
は
公的に
で利用でき、それらは
setValue()
&です。
postValue()
.
setValue()
: 値を設定し、すべてのアクティブなオブザーバにその値を送ります。
メインスレッド
.
postValue()
で設定された値を上書きするために、 メインスレッドにタスクをポストします。
setValue()
から呼び出されなければならない。
バックグラウンドスレッド
.
では
LiveData
は
不変
.
MutableLiveData
は
LiveData
というのは
ミュータブル
&
スレッドセーフ
.
関連
-
[解決済み] なぜゲッターとセッター/アクセッサーを使うのですか?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] Pythonのクラスはなぜオブジェクトを継承するのですか?
-
[解決済み] mixinとは何か、なぜ有用なのか?
-
[解決済み] getApplication()、getApplicationContext()、getBaseContext()、someClass.thisの違いと使い分け。
-
[解決済み] Studio 3.4 をアップデートしたら、引数の leftShift() メソッドが見つかりませんでした。
-
[解決済み] アンドロイドのクライアントでヒープアップデートを有効にする方法
-
[解決済み] Gradleでビルドタイプを使用し、ContentProviderを使用する同じアプリを1つのデバイスで実行する。
-
[解決済み] グリッドビューの高さが削減される
-
[解決済み] ViewModelからLiveDataを観察する
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] SDカードからファイルを削除する方法を教えてください。
-
[解決済み] プログラムでソフトキーボードを開く
-
[解決済み] Android Studio - あいまいなメソッド呼び出し getClass()
-
[解決済み] アンドロイドのクライアントでヒープアップデートを有効にする方法
-
[解決済み] Android - Snackbar vs Toast - 使い方と違い。
-
[解決済み] Android StudioからADBを手動で再起動する方法
-
[解決済み] Gradleでビルドタイプを使用し、ContentProviderを使用する同じアプリを1つのデバイスで実行する。
-
[解決済み] 非推奨のandroid.support.v4.app.ActionBarDrawerToggleの置き換え方法
-
[解決済み] google-services.jsonって実際何してるの?
-
[解決済み] ブルートゥースアプリケーションのテストにアンドロイドエミュレータを使用するには?