@@ -92,19 +92,19 @@ public class AndroidScreenLifecycleOwner private constructor() :
9292 isCreated = true
9393 controller.performRestore(savedState)
9494 initEvents.forEach {
95- lifecycle.handleLifecycleEvent (it)
95+ lifecycle.safeHandleLifecycleEvent (it)
9696 }
9797 }
9898
9999 private fun emitOnStartEvents () {
100100 startEvents.forEach {
101- lifecycle.handleLifecycleEvent (it)
101+ lifecycle.safeHandleLifecycleEvent (it)
102102 }
103103 }
104104
105105 private fun emitOnStopEvents () {
106106 stopEvents.forEach {
107- lifecycle.handleLifecycleEvent (it)
107+ lifecycle.safeHandleLifecycleEvent (it)
108108 }
109109 }
110110
@@ -130,7 +130,7 @@ public class AndroidScreenLifecycleOwner private constructor() :
130130 if (activity != null && activity.isChangingConfigurations) return
131131 viewModelStore.clear()
132132 disposeEvents.forEach { event ->
133- lifecycle.handleLifecycleEvent (event)
133+ lifecycle.safeHandleLifecycleEvent (event)
134134 }
135135 }
136136
@@ -160,19 +160,19 @@ public class AndroidScreenLifecycleOwner private constructor() :
160160 if (lifecycleOwner != null ) {
161161 val observer = object : DefaultLifecycleObserver {
162162 override fun onPause (owner : LifecycleOwner ) {
163- lifecycle.handleLifecycleEvent (Lifecycle .Event .ON_PAUSE )
163+ lifecycle.safeHandleLifecycleEvent (Lifecycle .Event .ON_PAUSE )
164164 }
165165
166166 override fun onResume (owner : LifecycleOwner ) {
167- lifecycle.handleLifecycleEvent (Lifecycle .Event .ON_RESUME )
167+ lifecycle.safeHandleLifecycleEvent (Lifecycle .Event .ON_RESUME )
168168 }
169169
170170 override fun onStart (owner : LifecycleOwner ) {
171- lifecycle.handleLifecycleEvent (Lifecycle .Event .ON_START )
171+ lifecycle.safeHandleLifecycleEvent (Lifecycle .Event .ON_START )
172172 }
173173
174174 override fun onStop (owner : LifecycleOwner ) {
175- lifecycle.handleLifecycleEvent (Lifecycle .Event .ON_STOP )
175+ lifecycle.safeHandleLifecycleEvent (Lifecycle .Event .ON_STOP )
176176
177177 // when the Application goes to background, perform save
178178 performSave(outState)
@@ -222,6 +222,13 @@ public class AndroidScreenLifecycleOwner private constructor() :
222222 else -> null
223223 }
224224
225+ private fun LifecycleRegistry.safeHandleLifecycleEvent (event : Lifecycle .Event ) {
226+ val currentState = currentState
227+ if (! currentState.isAtLeast(Lifecycle .State .INITIALIZED )) return
228+
229+ handleLifecycleEvent(event)
230+ }
231+
225232 public companion object {
226233
227234 private val initEvents = arrayOf(
0 commit comments