Javaでは、LiveDataの初期化は任意なのにKotlinのMutableLiveDataはよく分からない。
init{ } がKotlinにはあるので試しに書いてみる。
エラーは出ないし、問題が出なければ、いっか。
class MainViewModel: ViewModel() {
private val _mainData = MainData()
val mainData:MainData
get() = _mainData
val screenType: MutableLiveData<Int> by lazy { MutableLiveData<Int>() }
val rotateLock: MutableLiveData<Int> by lazy { MutableLiveData<Int>() }
val openBookMode: MutableLiveData<Boolean> by lazy { MutableLiveData<Boolean>() }
init {
screenType.value = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
rotateLock.value = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
openBookMode.value = true // true 右開き false 左開き
}
///// リスト ///////////////////////////////////////////
private var _targetPath = ""
val targetPath: String
get() = _targetPath
fun setTargetPath(path:String){ // Activityのみアクセス
_targetPath = path
}
///// 画像 ///////////////////////////////////////////
// 1枚表示か2枚表示かを保持。外部から_pageModeに書き込みできない仕様
private var _pageMode = 0
val pageMode: Int // 通常アクセス。読み取り専用
get() = _pageMode
// 1枚表示か2枚表示かをセットするメソッド。画面の向きで枚数を決定。使用場所限定。
fun setPageMode(){
when(screenType.value){
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT -> {
_pageMode = 1
}
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE -> {
_pageMode = 2
}
else -> _pageMode = 0
}
}
/////////// コルーチン //////////////////////////////
/**
private val coroutinScope = CoroutineScope(Dispatchers.Main + SupervisorJob())
fun test(){
coroutinScope.launch {
// 非同期処理
}
}
*/
override fun onCleared() {
super.onCleared()
_mainData.finish()
//coroutinScope.cancel()
}
}