首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android应用程序生命周期说明

Android应用程序生命周期说明
EN

Stack Overflow用户
提问于 2015-11-17 07:41:21
回答 6查看 518关注 0票数 15

有人能确认以下关于android应用程序生命周期的信息吗?

1)当应用程序处于前台时,内存将包含application对象的实例、所有活动的实例(未被终止)和从根的某个根引用的所有对象引用(尚未被垃圾收集)。

2)当应用程序转到后台时,Android框架在某一时刻可以:( a)杀死应用程序的整个过程,它将必要地从内存中删除所有对象( b)只杀死(因此其他对象引用都不会被删除)活动(通过完成它们以及本质上的任何片段)保存它们的状态,创建活动堆栈,并留下任何其他东西(Application对象、任何其他静态对象、可从根中访问的引用)。

我主要是对2b感兴趣,但我会在所有这些问题上得到证实,因为我正试图从头到尾从思想上把握整个概念。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2016-02-16 11:47:44

好的,在最近几周的搜索过程中,我得到了更多的信息,现在我可以回答我自己的问题(希望其他人也能回答):

1)正确

2a)正确

2b)假的。android框架,如果需要内存,或者由于其他原因不得不“杀死/减少”应用程序,那么它只能通过杀死专用于该应用程序的整个进程来做到这一点。android框架可以删除所选活动(Ies)或终止所有活动,但其他所有对象(如Application、singletons等)都可以存活。

票数 0
EN

Stack Overflow用户

发布于 2016-01-01 12:02:29

如果你正在寻找官方确认,那么最好只问谷歌:)。

但是我觉得读了这篇文章之后,你会对这些概念有一个更好的理解。

Android内存管理

android进程生命周期

回答第一个问题:是的,使用DDMS确认。

回答2a问题:是的,操作系统可以在其他进程需要内存的任何时间点杀死进程,这将导致杀死与进程相关的所有对象。

回答2b问题:

来自官方文件

进程生命周期3.后台活动(用户不可见并已暂停的活动)不再重要,因此系统可能会安全地终止其进程来为其他前台或可见进程回收内存。如果需要终止它的进程,当用户导航回活动(使其在屏幕上再次可见)时,它的onCreate(Bundle)方法将与它以前在onSaveInstanceState(Bundle)中提供的savedInstanceState一起调用,以便它能够在与用户上次离开时相同的状态下重新启动自己。

票数 4
EN

Stack Overflow用户

发布于 2016-01-04 14:49:19

是的,你对2b的看法大多是正确的。

如果某个活动暂停或停止,系统可以要求它完成或简单地终止其进程,从而从内存中删除该活动。

但是,在某些情况下,onSaveInstantSate不被调用:

请注意,在onPause()中保存持久数据非常重要,而不是onSaveInstanceState(Bundle),因为后者不是生命周期回调的一部分,因此不会像其文档中描述的那样在所有情况下调用。

Android文档源

通过启用以下开发人员选项,您可以请求android始终销毁后台活动。如果您正在调试您的应用程序,您应该能够逐步完成生命周期方法,并查看正在发生的事情。

设置->开发人员选项->应用程序->不保留活动

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33751531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档