我有一个带有3个标签的应用程序,每个标签有一个活动。当我在前两个活动之间切换时,前往后台的活动将通过onPause()
状态,而新活动将变为活动状态并调用onResume()
。这很好,因为这两个活动都有一个复杂的UI并且渲染它们需要2-3秒,但是当它们处于暂停状态时,它们会很快恢复。
但是,当我点击第3个标签,然后应用程序行为不同时,将进入后台的活动被完全销毁(它通过onPause()
,onStop()
和{{1} })。
知道行为有何不同?当用户切换到应用程序中的另一个活动时,有没有办法强制活动保持暂停状态?
由于 斯登
答案 0 :(得分:4)
此行为甚至可能在其他设备或任何其他上下文(不同的可用内存量等)上有所不同。
您有
的保证onResume()
在Activity
前进时被调用
当onPause()
进入后台时,会调用Activity
这是您唯一的保证。 (有关Activity
生命周期here)的详细信息。
所以你绝对不能假设onStop()
和onDestroy()
的召唤。每次从选项卡切换到另一个选项卡时,都可以调用它们,并且您的应用程序需要能够处理它。
答案 1 :(得分:1)
第一个活动被销毁的原因可能是缺少堆内存。如果Android内存不足,则会导致后台活动失败。这种行为不会受到开发人员的影响,因为如果没有足够的内存来保持工作,整个系统会减速并崩溃。