[转]Android-LiveData简单使用

0 原文

https://blog.csdn.net/u011810352/article/details/81334339

一个观察者去观察LiveData后,当观察者的生命周期处于STARTED或RESUMED状态时,的数据发生变化,则会通知观察者;若观察者处于其他状态,即使LiveData的数据发生变化,也不会发出通知。

2019-12-22 22:17:33.126 11578-11578/com.wu.su.livedatastudy D/shz_debug: onStart
2019-12-22 22:17:33.128 11578-11578/com.wu.su.livedatastudy D/shz_debug: onResume

1. 添加依赖

dependencies {
    //...
    def lifecycle_version = "1.1.1"
    //仅仅依赖LiveData
    implementation "android.arch.lifecycle:livedata:$lifecycle_version"
}

2. 如何使用 LiveData demo

2.1 LiveData

使用 LiveData 子类 MutableLiveData

package com.wu.su.livedatastudy;

import androidx.lifecycle.MutableLiveData;

public class TestModel {

    // MutableLiveData 为可变数据
    private MutableLiveData<String> instans;

    public MutableLiveData<String> getInstans() {
        if (instans == null) {
            instans = new MutableLiveData<>();
        }

        return instans;
    }

}

2.2 调用实例

虽然我在所有时间添加了 setValue 事件,但是还是只在 onResume和onStart才触发监听

package com.wu.su.livedatastudy;

import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.Observer;

import android.os.Bundle;
import android.util.Log;

import java.util.Observable;

public class MainActivity extends AppCompatActivity {

    private final static String TAG = "shz_debug";

    private TestModel testModel;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initListener();
        testModel.getInstans().setValue("onCreate");
    }

    private void initListener() {
        testModel = new TestModel();
        testModel.getInstans().observe(this, new Observer<String>() {
            @Override
            public void onChanged(String s) {
                Log.d(TAG, s);
            }
        });
    }

    @Override
    protected void onStart() {
        super.onStart();
        testModel.getInstans().setValue("onStart");
    }

    @Override
    protected void onResume() {
        super.onResume();
        testModel.getInstans().setValue("onResume");
    }

    @Override
    protected void onStop() {
        super.onStop();
        testModel.getInstans().setValue("onStop");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        testModel.getInstans().setValue("onDestroy");
    }


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值