Android ๊ฐ๋ฐ์ ํ๋ค ViewModel ๋ด๋ถ์ ํ๋กํผํฐ๋ฅผ ์ธ๋ถ์์ ๋ณ๊ฒฝํ์ง ๋ชปํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ Backing Properties์ ๋ํ ๊ถ๊ธ์ ์ด ์๊ฒผ๋ค.
๊ตฌ๊ธ์ํ์์ ์ฐธ๊ณ ํ์ ๋ ์๋ ์ฝ๋๋ ํ๋ฉด์ ๋ก๋ฉ ๋ ธ์ถ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ํ๋กํผํฐ์ด๋ค
private val _dataLoading = MutableLiveData<Boolean>()
val dataLoading: LiveData<Boolean> = _dataLoading
private val _dataLoading = MutableLiveData<Boolean>()
val dataLoading: LiveData<Boolean>
get() = _dataLoading
์์ ์ฝ๋์ฒ๋ผ ๋๊ฐ์ง ๋ฐฉ์์ ์ด๋ค ์ฐจ์ด์ ์ด ์์๊น?
private val _dataLoading = MutableLiveData<Boolean>()
val dataLoading: LiveData<Boolean> = _dataLoading
์์ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์ด๊ธฐํ๋ ๋น์ dataLoading
์ _dataLoading
๋ฅผ ์ธํ
ํ๋ค๋ ๊ฒ์ด๋ค.
private val _dataLoading = MutableLiveData<Boolean>()
val dataLoading: LiveData<Boolean>
get() = _dataLoading
์์ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด dataLoading
์ ๊ฐ์ ธ์ฌ ๋ _dataLoading
๋ฅผ return ํด์ฃผ๋ ๊ฒ์ด๋ค.
์์ ์์์ ๋ฌ๋ฆฌ _dataLoading
์ด ๊ฐ๋ณ์ด๊ณ ์ฌ์์ฑ ๋์๋ค๊ณ ๊ฐ์ ํด๋ณด์.
2๋ฒ ๋ฐฉ์์์๋ dataLoading
์ ๊ฐ์ ธ์ฌ ๋ _dataLoading
์์ฒด๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ ์ฌ์์ฑ๋ ํ๋กํผํฐ๋ฅผ ์ป์ ์ ์๋ค. ๋ฐ๋ฉด์ 1๋ฒ ๋ฐฉ์์์๋ ์ด๊ธฐํ ๋น์์ _dataLoading
์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฌ์์ฑ๋ ํ๋กํผํฐ๋ ์ป์ ์ ์์ ๊ฒ์ด๋ค.
๊ฐ๋จํ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํด๋ณด์๋ค.
class BackingPropertiesTest {
private var _user = User("์ด๋ฆ")
private val user1 = _user
private val user2
get() = _user
@Test
fun test() {
println("user1: $user1")
println("user2: $user2")
println("_user: ์ฌ์์ฑ")
_user = User("์ด๋ฆ๋ณ๊ฒฝ")
println("user1: $user1")
println("user2: $user2")
}
data class User(var name: String)
}
// ์คํ๊ฒฐ๊ณผ
user1:: User(name=์ด๋ฆ)
user2: User(name=์ด๋ฆ)
_user: ์ฌ์์ฑ
user1: User(name=์ด๋ฆ)
user2: User(name=์ด๋ฆ๋ณ๊ฒฝ)
user1
์ ์ด๊ธฐํ ๋น์์ User๋ฅผ return ํ ๊ฒ์ด๊ณ , user2
๋ _user ์์ฒด๋ฅผ return ํ ๊ฒ์ด๋ค.
๊ฒฐ๊ณผ๋ฅผ ํ์ธํด ๋ดค์ผ๋ ์๋ฐ ์ฝ๋๋ก ๋ณํํด์ ์ดํด๋ณด์.
๋จผ์ user1
์ ์ดํด๋ณด๋ฉด private final BackingPropertiesTest.User user1;
๋งด๋ฒ๋ฒ์๊ฐ ์ ์ธ๋์ด ์๊ณ , public BackingPropertiesTest() { this.user1 = this._user; }
์ด๊ธฐํ ๋น์์ _user
๋ฅผ ํ ๋นํด ์ฃผ๊ณ ์๋ค.
user2
๋ฅผ ์ดํด๋ณด๋ฉด private final BackingPropertiesTest.User getUser2() { return this._user; }
ํ๋์ ํจ์๊ฐ ์์ฑ๋์์ผ๋ฉฐ _user
๋ฅผ ๋ฐํํ๊ณ ์๋ค.
์ด์ ๋ ๊ฐ์ง ๋ฐฉ์์ ์ฐจ์ด์ ์ ํ์ฐํ ์ ์ ์๊ฒ ๋์๋ค. ์ํฉ์ ๋ฐ๋ผ ์ ์ ํ ๋ฐฉ์์ ์ฑํํ๋ฉด ๋ ๊ฒ์ด๋ค.