如何在onSaveInstanceState之后正确处理addListenerForSingleValue

时间:2019-04-03 14:07:07

标签: android firebase firebase-realtime-database kotlin

我使用Firebase已有很长时间了,我非常感谢它的灵活性,可以轻松地从其实时数据库中获取一些数据。但是,在处理addListenerForSingleValueEvent的调用结果时遇到一些问题。 如果已经调用onSaveInstanceState,则每次返回UI后必须执行一些UI操作时,我的应用程序都会崩溃。 有什么方法可以像在addValueEventListener中那样在onPause()中终止操作?

我知道一个解决方案可以检查onSaveInstanceState是否已被调用,但是我尝试过的所有解决方案似乎都不可靠。 我尝试检查以下方法:

isAdded()
isVisible()
isFinishing()

同时显示片段和活动。

我的尝试的一个例子是:

dbref.addListenerForSingleValueEvent(object : ValueEventListener {
    override fun onDataChange(dataSnapshot: DataSnapshot) {
        if(isAdded && isVisible && activity?.isFinishing == false){
            GenericMessageDialog.newInstance(getString(R.string.generic_error_title), errorMessage).show(activity?.supportFragmentManager, "ed")
    }
}

有时会引发此异常

Fatal Exception: java.lang.IllegalStateException
Can not perform this action after onSaveInstanceState

0 个答案:

没有答案