Android 应用程序生命周期说明

标签 android android-activity

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

1) 当应用程序在前台时,内存将包含应用程序对象的实例、所有 Activity 的实例(未终止)以及从根(尚未被垃圾收集)之一引用的所有对象引用

2) 当应用程序进入后台时,Android Framework 在某个时候可以: a)终止应用程序目的的整个过程,这将基本上从内存中删除所有对象 b) 仅杀死(因此基本上不会删除其他对象引用) Activity (通过完成它们以及本质上任何 fragment )保存它们的状态并创建 Activity 堆栈并留下任何其他东西(应用程序对象,任何其他静态对象,可从任何根访问的引用)。

我最感兴趣的是 2b,但我会感谢所有这些要点的确认,因为我正试图从头到尾在心理上掌握整个概念。

最佳答案

如果您正在寻找官方确认,那么最好只询问 Google :)。

但我觉得读完这篇文章你会对这些概念有更好的理解。

Android memory management

android process lifecycle

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

回答 2a 个问题:是的,当其他进程需要内存时,操作系统可以随时终止进程,这将导致终止与进程相关的所有对象。

2b 问题的答案:

来自官方文档

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

关于Android 应用程序生命周期说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33751531/

相关文章:

java - 除非您更新 Google Play 服务,否则此应用不会运行

android - Jetpack Compose - Unresolved reference : observeAsState

android - 项目评估后访问 build.gradle 中的 sdk.dir 值

android - 以编程方式将自定义 View 添加到布局

android - 如何防止 NDK 将堆栈跟踪转储到 android logcat?

android - Flutter IAP - 你已经拥有这个项目的错误

android - 为什么模拟器中的菜单按钮会显示我的应用程序的所有 Activity ?

Android - 刷新/重新启动以前的 Activity

Android Studio 如何从 fragment 中获取 Intent ?

java.lang.NullPointerException : Attempt to invoke virtual method 'android. content.pm.PackageManager