Android攻略

AndroidArchitecture架构学习之 LiveDat

2018-07-18  本文已影响21人  NoValue

关于LiveData

最近livedata确实很好用,我自己仔细研究,深入探讨,努力学习,终于明白一点点新得所以写了点笔记。

什么是livedata

简单地说,LiveData是一个数据持有类。它具有以下特点:

学习demo

最简单的Demo 学习liveData
参考githubDemo :githubDemo最简单的地址

public class LiveDataActivity extends AppCompatActivity{
    
    
    private TextView tvUsername;
    private MutableLiveData<String> liveDataUsernameStr;
    
    
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_live_data);
        tvUsername=findViewById(R.id.tv_username);
        initDatas();
    }
    
    private void initDatas(){
        liveDataUsernameStr=new MutableLiveData<>();
        liveDataUsernameStr.observe(this, new Observer<String>(){
            @Override
            public void onChanged(@Nullable String s){
                tvUsername.setText(s);
            }
        });
    }
    
    public void onClickMainThread(View view){
        liveDataUsernameStr.setValue("lixiaodaaaaMain");
    }
    
    public void onClickThread(View view){
        new Thread(new Runnable(){
            @Override
            public void run(){
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                liveDataUsernameStr.postValue("lixxiaodaaaaThread");
            }
        }).start();
    }
}

xml地址定义(UI页面)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.ihognqiqu.aac.livedata.LiveDataActivity">

    <TextView
        android:id="@+id/tv_username"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:padding="40dp"
        android:text="Default User Name"
        android:textSize="20dp" />

    <Button
        android:id="@+id/tv_change_username"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:onClick="onClickMainThread"
        android:text="Change User Name main thread" />

    <Button
        android:id="@+id/tv_change_username_background"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:onClick="onClickThread"
        android:text="Change User Name background" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="10dp"
        android:padding="10dp"
        android:text="一个数据持有类,持有数据并且这个数据可以被观察被监听,和其他Observer不同的是,它和Lifecycle是绑定的。"
        android:textColor="@color/colorPrimary"
        android:textSize="17dp" />


</LinearLayout>
上一篇下一篇

猜你喜欢

热点阅读