[解決済み] MutableLiveDataにおけるsetValue()とpostValue()の相違点
2022-04-28 03:06:25
質問
の値を変更する方法は2つあります。
MutableLiveData
. しかし
setValue()
&
postValue()
で
MutableLiveData
.
同じ内容のドキュメントを見つけることができませんでした。
以下はそのクラスです。
MutableLiveData
Androidの
package android.arch.lifecycle;
/**
* {@link LiveData} which publicly exposes {@link #setValue(T)} and {@link #postValue(T)} method.
*
* @param <T> The type of data hold by this instance
*/
@SuppressWarnings("WeakerAccess")
public class MutableLiveData<T> extends LiveData<T> {
@Override
public void postValue(T value) {
super.postValue(value);
}
@Override
public void setValue(T value) {
super.setValue(value);
}
}
解決方法は?
ドキュメントに基づきます。
値を設定します。アクティブなオブザーバーがいる場合、値は にディスパッチします。このメソッドはメインスレッドから呼び出す必要があります。
与えられた値を設定するためのタスクをメインスレッドにポストします。メインスレッドがポストされたタスクを実行する前にこのメソッドを複数回呼び出した場合、最後の値のみがディスパッチされます。
要約すると、重要な違いは次のようになります。
setValue()
メソッドは、メインスレッドから呼び出す必要があります。しかし、バックグラウンドのスレッドから値を設定する必要がある場合。
postValue()
を使用する必要があります。
関連
-
Androidのadbデバイスがオフラインであることが判明
-
NetworkOnMainThreadException
-
[解決済み] Androidのgravityとlayout_gravityの違いは何ですか?
-
[android studio]com.android.ide.common.process.ProcessException: aaptの実行に失敗しました
-
アプリはGoogle検索でインデックスされません Androidmanifestのクソみたいな黄色い警告
-
view.getRootView()の本当の意味とテストについて
-
アンドロイドの遅延実行のいくつかの方法
-
[解決済み] match_parentとfill_parentの違いは何ですか?
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
-
[解決済み] MutableLiveData。コルーチンからバックグラウンドスレッドでsetValueを実行できない
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
java.lang.NullPointerException: NULLオブジェクト参照で仮想メソッド......を呼び出そうとしました。
-
aapt2エラー:ログを確認する(具体的な原因の探り方)
-
Android のパッケージングに失敗し、Android リソースのリンクに失敗したことを示すプロンプトが表示される
-
エラーが発生しました。ArrayAdapter は、リソース ID が TextView である必要があります。
-
Android開発で「Attempt to invoke virtual method 'XXX()' on null object reference」というヌルポインター例外に遭遇する。
-
ActivityはOnFragmentInteractionListenerを実装しなければならないに関する質問
-
アンドロイドスタジオのエラーを解決する --> Error:(1, 0) id 'com.android.application' を持つプラグインが見つかりません。
-
telnet'が内部コマンドまたは外部コマンドとして認識されない 解決方法
-
WeChatとQQは、他のアプリのオープンリストに自分のアプリを追加し、ファイルパスを取得することができます
-
アンドロイドリストビュー