跳过 Android 生命周期方法

Posted

技术标签:

【中文标题】跳过 Android 生命周期方法【英文标题】:Skipping in Android Lifecycle methods 【发布时间】:2019-02-12 03:49:29 【问题描述】:

我正在尝试理解 Activity 的生命周期方法的实际概念。

我只关注下面提到的主要生命周期方法

onCreate()
onStart()
onResume()
onPause()
onStop()
onDestroy()

有人可以解释一下我们可以跳过方法并且休息生命周期工作得很好的场景吗?

例如如果我向上滑动并终止应用程序,onPause()onStop() 方法将被跳过,只有 onDestroy() 方法将执行。

【问题讨论】:

为什么?您不需要重写这些方法,它们在 Activity 基类中是空的。 是的,我知道它们被基类覆盖,我正在寻找现实生活中的场景,我们可以探索这些方法的跳过。 我认为不存在。不过我得检查一下来源。 它确实存在,因为通过编码我们可以在创建时添加finish(),并且除了destroy()之外的所有其他方法都将被跳过,如果通过编码可以做到这一点,那么将会有一个场景在现实生活中也复制这种情况。这就是我要找的:) @Tushar 这不是跳过一个方法。它永远不会启动它们。活动生命周期是一个具有定义转换的状态机。除了异常终止的情况外,这些转换都不允许您跳过状态。将其视为跳过,您会认为事情是完全错误的,这会让您对世界产生混乱的看法。 【参考方案1】:

您不能跳过这些方法,因为在实施时,它们必须调用到它们的super 类,例如。 AppCompatActivity - 当没有被实现时,仍然会在 super 类中触发。只需查看文档:Understand the Activity Lifecycle。

【讨论】:

【参考方案2】:

谁能解释一下我们可以跳过一个方法并且休息生命周期工作得很好的场景。

除非你手动调用finish(),比如onCreate(),否则它永远不会发生,这是毫无意义的。如果系统“跳过”了一个生命周期方法(并且发生这种情况的唯一情况是应用进程被杀死),那么其余的方法也将被“跳过”。

如果我向上滑动并终止应用程序,将跳过 onPause() 和 onStop() 方法,只执行 onDestroy() 方法。

同样,由于上述原因,它永远不会发生。

【讨论】:

【参考方案3】:

onDestroy() 方法永远不会在您向上滑动并终止应用程序时调用。

【讨论】:

以上是关于跳过 Android 生命周期方法的主要内容,如果未能解决你的问题,请参考以下文章

Android Activity生命周期解析

重温Android和Fragment生命周期

android的生命周期

Android-Android中service与application的生命周期有关系吗

android 怎么打印service生命周期

android对应生命周期中应该释放哪些资源