Я обнаружил, что когда мое приложение остается в фоновом режиме, а затем пользователь запускает приложение, оно вызывает IllegalStateException
. Это исключение выдается, потому что viewLifecycleOwner
является нулем. Интересно, как это вообще возможно?
Код выглядит так: в течение Fragment
onActivityCreated
я получил:
val mapFragment = (childFragmentManager.findFragmentById(R.id.mapFragment) as SupportMapFragment)
mapFragment.getMapAsync {
myViewModel.someValue.observe(viewLifecycleOwner, Observer {
doStuff()
})
}
Как я уже писалвыше, IllegalStateException
генерируется только тогда, когда приложение остается много времени в последних приложениях.
Я понятия не имею, почему, я просто могу предположить, что при использовании чего-то неожиданного происходитGoogle Map Fragment
(вложено в Fragment
) с LiveData
. Что-то вроде проблемы со сложной группой жизненных циклов (Activity, Fragment, ViewModel, LiveDate, GoogleMapFragment)
Отслеживание стека:
java.lang.IllegalStateException:
at androidx.fragment.app.Fragment.getViewLifecycleOwner (Fragment.java:329)
at com.packagename.myapp.view.fragments.ObjectFragment.init (ObjectFragment.kt:69)
at com.packagename.myapp.fragments.ObjectFragment.access$init (ObjectFragment.kt:28)
at com.packagename.myapp.fragments.ObjectFragment$onActivityCreated$1.onMapReady (ObjectFragment.kt:58)
at com.google.android.gms.maps.zzak.zza (Unknown Source:2)
at com.google.android.gms.maps.internal.zzaq.dispatchTransaction (Unknown Source:12)
at com.google.android.gms.internal.maps.zzb.onTransact (Unknown Source:12)
at android.os.Binder.transact (Binder.java:675)
at cw.b (com.google.android.gms.dynamite_mapsdynamite@19275081@19.2.75 (100400-269183835):14)
at com.google.android.gms.maps.internal.be.a (com.google.android.gms.dynamite_mapsdynamite@19275081@19.2.75 (100400-269183835):4)
at com.google.maps.api.android.lib6.impl.bj.run (com.google.android.gms.dynamite_mapsdynamite@19275081@19.2.75 (100400-269183835):4)
at android.os.Handler.handleCallback (Handler.java:873)
at android.os.Handler.dispatchMessage (Handler.java:99)
at android.os.Looper.loop (Looper.java:214)
at android.app.ActivityThread.main (ActivityThread.java:7050)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:965)