关于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>