我读过几篇描述两者之间区别的帖子onStart()
and onResume()
: onStart()
当活动变得可见时调用,onResume()
当活动准备好与用户交互时调用。美好的。
我总是只是添加代码onPause()
and onResume()
,并且从不关心onStart()
and onStop()
.
谁能举一些具体的例子来说明你可能会做什么onStart()
, vs. onResume()
?同样适用于onStop()
and onPause()
, 怎么onStop()
有用?我一定在这里遗漏了一些基本的东西。
onStop()
将(例如)在您离开该活动进行其他活动时被调用(编辑:几乎。请参阅有关对话框主题活动的公共软件评论)。
例如,如果您使用startActivity()
在活动 A 中启动活动 B。当您在活动 B 中按返回键时,您将返回到活动 A 并onStart
将被调用。
这与某些原因不同onPause
可能会被调用而无需onStop
被召唤。例如,如果屏幕超时或按下待机按钮onPause
会被调用,但可能不会onStop
(取决于可用内存等),所以这是一个“较轻的暂停”。即使在这种情况下,onStop 也可能最终被调用,但不会立即被调用。
好吧,但是有什么用
通常没有特定用途,但也可能有。由于即使您启动其他活动后,您的活动也会将其内存状态保留在堆栈中,因此该堆栈将随着启动的活动数量(堆栈的高度)而增加。
这可能会导致某些应用程序使用大量内存。一段时间后,框架将启动并杀死堆栈上的一些活动,但这是相当生硬的,并且可能意味着返回时要保留很多状态。
所以一个例子用于onStart/onStop
就是如果您想在将某个活动留给另一个活动时释放某些状态,并在返回时重新创建它。
我用它来将 listadapters 设置为 null、空图像缓存等(在非常具体的应用程序中)。如果您想释放列表适配器中可见视图使用的内存,您可以在 onstart 中重新创建它,并让 gc 拾取视图。这将增加活动的其余记忆状态继续存在的可能性。
有些资源可以被认为足够好,可以在活动实例处于活动状态时保存,而有些资源仅当它位于堆栈的前面时才被认为足够好。由您决定应用程序中什么是最好的,创建/启动/恢复的粒度可以为您提供这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)