我使用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