Все работало нормально, пока я не добавил модель представления и наблюдателей
Код: Выделить всё
class SplashActivity : AppCompatActivity() {
private lateinit var mBinding: ActivitySplashBinding
private lateinit var authVM: AuthViewmodel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mBinding = ActivitySplashBinding.inflate(layoutInflater)
setContentView(mBinding.root)
authVM = ViewModelProvider(this)[AuthViewmodel::class.java]
observeLoginStatus()
}
private fun observeLoginStatus() {
authVM.getUserLoginStatus?.observe(this, Observer { loggedInUser ->
if (loggedInUser != null) {
Handler().postDelayed({
navigateToMainActivity()
}, 3000)
} else {
Handler().postDelayed({
navigateToAuthActivity()
}, 3000)
}
})
}
private fun navigateToMainActivity() {
val intent = Intent(this@SplashActivity, MainActivity::class.java)
startActivity(intent)
finish()
}
private fun navigateToAuthActivity() {
val intent = Intent(this@SplashActivity, AuthActivity::class.java)
startActivity(intent)
finish()
}
}
это logcat
[img]https://i. sstatic.net/6mNRfOBM.png[/img]


Код для AuthViewmodel, поскольку в трассировке стека также упоминается authViewmodel:
Код: Выделить всё
class AuthViewmodel : ViewModel() {
private var authRepo = AuthRepository()
val getUserLoginStatus: LiveData? = authRepo.getUserLogInStatus()
private val _getUser = MutableLiveData()
val getUser: LiveData get() = _getUser
private val _insertUserResult = MutableLiveData()
val insertUserResult: LiveData get() = _insertUserResult
fun insertUser(user: User) {
viewModelScope.launch {
val result = authRepo.insertUser(user)
_insertUserResult.postValue(result)
}
}
fun fetchUser(username: String, password: String) {
viewModelScope.launch {
val user = authRepo.getUser(username, password)
_getUser.postValue(user)
}
}
fun updateUserStatus(user: User) {
viewModelScope.launch {
authRepo.updateUserStatus(user)
}
}
Код: Выделить всё
class AuthRepository {
private fun getDbInstance(): Task1Database {
return Task1Database.getDatabase(Task1.getContext().applicationContext)
}
suspend fun insertUser(user: User): Long {
return getDbInstance().userDao().insertUser(user)
}
fun getUser(username: String, password: String): User? {
return getDbInstance().userDao().getUser(username, password)?.value
}
fun getUserLogInStatus(): LiveData? {
return getDbInstance().userDao().getUserLogInStatus()
}
suspend fun updateUserStatus(user: User) {
getDbInstance().userDao().updateUserStatus(user)
}
Код: Выделить всё
class Task1 : Application(), LifecycleObserver {
override fun onCreate() {
super.onCreate()
mContext = this
}
companion object {
private lateinit var mContext: Context
fun getContext(): Context {
return mContext
}
}
Код: Выделить всё
@Database(entities = [User::class], version = 1, exportSchema = false)
Код: Выделить всё
abstract fun userDao(): AuthDao
companion object {
@Volatile
private var INSTANCE: Task1Database? = null
fun getDatabase(context: Context): Task1Database {
return INSTANCE ?: synchronized(this) {
val instance = Room.databaseBuilder(
context.applicationContext,
Task1Database::class.java,
"app-database"
).build()
INSTANCE = instance
instance
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... -java-lang