365連休

にわかのandroidとかの開発メモ。

Android Roomが返す"LiveDataの挙動"についてメモ

Android Room Databaseの@Daoで返すLiveData<?>は、Observeしないとそもそもクエリを発行しない。

 

確認環境

  • implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
  • implementation 'androidx.room:room-runtime:2.2.5'

ある画面でRoomからLiveData形式で取得し、一度もObserveせず後の方の画面でgetValueしてもnullのままだった。

 

より正確には「LiveDataがActive」の時のみデータを取得している

class RoomTrackingLiveData extends LiveData {
    //中略
    
    @Override
    protected void onActive() {
        super.onActive();
        mContainer.onActive(this);
        getQueryExecutor().execute(mRefreshRunnable); //☆ここ
    }

    //後略
    
}

 

 

Android Roomライブラリのライセンス解釈
ソースコードから抽出されたドキュメントやコードはAndroid Open Source Projectの優先ライセンスであるApache 2.0 licenseが適用され、それ以外のコンテンツはCC BY 2.5が適用されている。
よって、ページ内のコード転載についてはApache 2.0 licenseにおける頒布行為にあたると解釈している。