活动未经历整个生命周期的一种情况是需要做出决定(可能是通过onCreate()内的if条件)并通过调用内部的Finish()立即终止活动。 onCreate()方法本身。当发生这种情况时,在onCreate()之后调用onDestroy()。
这显然是与活动生命周期的偏差。我的问题是
1)为什么Android会允许这种行为?任何可能的原因?
2)还有其他方法可以实现这种决策功能吗?是否有任何内置工具,如小部件或后台方法为程序员执行此操作?
答案 0 :(得分:2)
活动未经过onCreate()的记录生命周期onStart()onResume()onPause()onStop()然后绕过onDestroy()使其成为onCreate()然后onDestroy()而没有其他方法< / p>
它正在经历适合该情况的生命周期部分。引用the documentation:&#34;活动的可见生命周期发生在对onStart()的调用和对onStop()&#34;的调用之间。因此,在此类情况下,活动永远不可见,无需拨打onStart()
,onResume()
,onPause()
和onStop()
。
从程序员的角度来看,这些特殊情况总会增加学习内容的复杂性
这种复杂性在软件开发中几乎适用于任何平台和环境。
所以,我想知道在onCreate()中是否允许使用诸如fall to finish()之类的东西。
没有人,但你知道你认为是什么&#34;任何有效的理由&#34;。
最有可能的是,这是一种优化路径,可以通过跳过不必要的工作来节省CPU时间,电池和可能的内存。请记住,Android是十年前围绕硬件设计的,其中移动CPU具有当今设备处理能力的约1%,更不用说将来可能出现的设备。
答案 1 :(得分:1)
当您从一个活动导航到另一个活动并且您不再需要第一个活动(如启动画面)时,您可能会在第一个活动的某个地方调用以下内容:
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(intent);
finish();
如果您不调用finish
方法并允许该启动画面处于恢复状态。按下SecondActivity
后退按钮会发生什么?你会再次看到闪屏!想象一下这将是多么可怕。此Android框架的目的不是让您通过Activity的所有生命周期方法,而是为您提供应用程序中所需的任何设施。我想这个例子可以帮助您理解为什么Android不允许这样的行为。
答案 2 :(得分:0)
从这个问题的其他答案中可以理解,活动的设计方式使得它们不需要经历或调用其生命周期中的所有方法。
程序员设计的活动通过其整个生命周期的常见情况就像需要显示启动画面一样。另一个要求是任何不需要UI的任何任务,并且在onCreate()方法本身内调用finish()。在这种情况下,正如问题所示,在onCreate()之后立即调用onDestroy(),而不调用活动生命周期的其他中间方法。
但是,我不确定android是否为任何此类特定任务提供任何小部件,但是在服务中执行任何此类非UI任务总是有意义的,而不是尽可能在活动中执行。由程序员决定什么适合给定的要求。