Correct way to expose MutableLiveData as LiveData?

后端 未结 2 1794
北荒
北荒 2021-01-01 16:25

Consider the following ways to expose MutableLiveData:

Method A

class ThisViewModel : ViewModel() {

    private val _s         


        
相关标签:
2条回答
  • 2021-01-01 17:02

    From the Java perspective, Method A has one less field in the class, thus is "more" efficient. From the Kotlin perspective, Method B denotes a bit more clearly, that the non-mutable property is a direct reference to the mutable one. Also Kotlin is clever enough to locally access the field rather than the getter method.

    Is there a reason to use Method B over Method A?

    In general is merely a matter of taste. Looking at it from a micro-optimization perspective it depends on whether or not you'd also use this reference within the class itself.

    0 讨论(0)
  • 2021-01-01 17:09

    Starting from Kotlin 1.4-M2 you can do simply:

    private val myMutableLiveData = MutableLiveData<String>()
    val myLiveData : LiveData<String> by this::myMutableLiveData
    

    The this:: is unfortunately needed, otherwise does not compile.

    I found this in Igor Wojda's answer which discusses other approaches. Unfortunately his answer in this question was deleted.

    0 讨论(0)
提交回复
热议问题