专栏名称: 刘望舒
腾讯云最具价值专家
目录
相关文章推荐
复利大王  ·  手握25w华子股票,躺平了 ·  8 小时前  
复利大王  ·  520怀孕事件? ·  8 小时前  
复利大王  ·  头等舱的空姐 ·  昨天  
鸿洋  ·  2025 Google I/O 带来的 ... ·  2 天前  
51好读  ›  专栏  ›  刘望舒

Android Jetpack架构组件(四)一文带你了解LiveData(使用篇)

刘望舒  · 掘金  · android  · 2019-10-28 22:35

正文

请到「今天看啥」查看全文


class MainActivity extends AppCompatActivity { private static final String TAG= "MainActivity" ; @Override protected void onCreate (Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); MutableLiveData<String> mutableLiveData = new MutableLiveData<>(); mutableLiveData.observe( this , new Observer<String>() { //1 @Override public void onChanged (@Nullable final String s) { Log.d(TAG, "onChanged:" +s); } }); mutableLiveData.postValue( "Android进阶三部曲" ); //2 } } 复制代码

注释1处的observe方法有两个参数分别是LifecycleOwner和 Observer<T> ,第一个参数就是MainActivity本身,第二个参数新建了一个 Observer<String> ,在onChanged方法中得到回调。注释处的postValue方法会在主线程中更新数据,这样就会得到打印的结果。 D/MainActivity: onChanged:Android进阶三部曲

在大多数情况下,LiveData的observe方法会放在onCreate方法中,如果放在onResume方法中,会出现多次调用的问题。除了MutableLiveData的postValue方法,还可以使用setValue方法,它们之前的区别是,setValue方法必须在主线程使用,如果是在工作线程中更新LiveData,则可以使用postValue方法。

2.更改LiveData中的数据

如果我们想要在LiveData对象分发给观察者之前对其中存储的值进行更改,可以使用Transformations.map()和Transformations.switchMap(),下面通过简单的例子来讲解它们。

2.1 Transformations.map()

如果想要在LiveData对象分发给观察者之前对其中存储的值进行更改,可以使用Transformations.map()。

public class MainActivity extends AppCompatActivity {
   private static final String TAG="MainActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MutableLiveData<String> mutableLiveData  = new MutableLiveData<>();
        mutableLiveData.observe(this, new Observer<String>() {
            @Override
            public void onChanged(@Nullable final String s) {
                Log.d(TAG, "onChanged1:"






请到「今天看啥」查看全文


推荐文章
复利大王  ·  手握25w华子股票,躺平了
8 小时前
复利大王  ·  520怀孕事件?
8 小时前
复利大王  ·  头等舱的空姐
昨天
浩哥说  ·  亚马逊公司:终极目的是逆袭!
8 年前
读书小分队  ·  坏女孩才能得到一切
8 年前