#8 MutableLiveData定~簡単な例


アプリを作成すると..。


変数値の変化を検出すれば、きっと便利な時があるに違いない.
傍観者モードは使えますが、実現自体も複雑…使用頻度の低い場所に2つのクラスを加えて少し乱れを実現...

そして会ったのはMutableLiveData


公式文書を見ても、あまり理解できず、様々なブログを見ても例題が少し分かりにくく複雑だと思います.
実際、私は初めてアプリケーション開発を勉強してから、長い例を見て、私は多くの考えを持っています.
「どうしてこんなに長くて複雑なの?」
「ライブラリを書いたのにどうしてコードがこんなに長いの?」
「どう考えても特別な機能がないのに、どうしてこんなに雄大に実現したの?」
私にとって傍観者モードはそうです.

だから最初は。


傍観者モードは非常に乱雑にスキップされますMutableLiveDataは実装が複雑であると考えてスキップした.
そのため、結論はThreadです.Threadではsleepを500~1000 msに保ち、while(true)は終了する.非常に無知で性能が落ちる方法ですが、他に方法はないと言い訳したいです.

角度を見つけてMutableLiveDataを開きました


どうしたんですか.とても簡単です
public class MainActivity extends AppCompatActivity {
    private MutableLiveData<String> m_data = new MutableLiveData<>();
    // 그냥 이렇게 선언, 초기화 해주고!
        @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
    
           if (!m_data.isEmpty()) { // Null Check 딱 해주고!
           		Log.d("LOG", m_data.getValue());  // 로그 찍어주고!
           }
           
        m_data.observe(MainActivity.this, new Observer<String>() {
            @Override
            public void onChanged(String string) { 
               Log.d("LOG", m_data.getValue()); // 결과 확인을 위해 로그를 찍어주고!

            }
        });
        
         button.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        m_data.setValue("Change"); // setValue() 해주면!
                    }
                });
        

本当に簡単ですね。


プロセスはこうです.
  • MutableLiveData
  • のリリースと初期化
  • observeメソッドでonChangedコールバックメソッドでtodo(開発者)を定義します.
  • 動作(例ではボタンのonClick()上でMutableLiveDataのsetValueメソッドを実装する.
  • これで終わりです.setValueメソッドでMutableLiveDataの値を変更すると、onChangedメソッドがコールバックされます.

    注意事項


    ただし、setValue()はmain Threadで呼び出さなければなりません.他のThreadでMutableLiveDataの値を変更する場合は、PostValue()を使用します.