我有一个应用程序,有3个标签,每个标签一个活动。当我在前两个活动之间切换时,即将进入后台的活动通过onPause()
状态,而新的活动变为活动并调用onResume()
。这很好,因为这两个活动都有一个复杂的UI,呈现它们需要2-3秒,但是当它们保持在暂停状态时,它们很快就会恢复。
但是当我点击第三个标签,那么应用程序的行为是不同的,活动,这将是后台,被完全破坏(它通过onPause()
, onStop()
和onDestroy()
)。
你知道为什么会有不同的行为吗?当用户切换到应用程序中的另一个活动时,是否有一种方法可以强制活动保持在暂停状态?
谢谢STeN
这种行为在其他设备或任何其他上下文中(不同的可用内存量等)甚至可能是不同的。
你有保证
-
onResume()
在Activity
进入前台时被调用 -
onPause()
在Activity
进入后台时被调用,
,这是你唯一的保证。(Activity
生命周期的更多细节在这里)。
所以你绝对不能对onStop()
和onDestroy()
的调用做任何假设。当你从一个选项卡切换到另一个选项卡时,它们可能被调用,也可能不被调用,你的应用程序需要能够处理这种情况。
第一个活动被销毁的原因可能是由于缺乏堆内存。如果Android内存不足,它会杀死后台活动。这种行为不能被开发人员影响,因为如果没有足够的内存来保持运行,整个系统会变慢并崩溃。