gpt4 book ai didi

Android 静态对象生命周期

转载 作者:IT老高 更新时间:2023-10-28 13:05:27 24 4
gpt4 key购买 nike

我正在创建事件搜索应用程序,我们从一个屏幕设置搜索条件填充到另一个屏幕,然后用户可以从第 3 个屏幕编辑搜索条件并转到第 4 个屏幕。

为了完成上述任务,我使用了静态对象,它记住了应用程序周围的值,我不需要做任何额外的事情。

但是如果发现内存不足,我担心android中的静态对象生命周期会删除静态对象???

由于android支持多任务,如果用户切换到另一个应用程序并且当用户回来时应用程序开始疯狂,当它执行多任务时静态对象会被删除吗???任何想法 ??并且还建议通过单例方法保存静态对象是更好的方法???

最佳答案

让我们从一些背景知识开始:启动应用程序时会发生什么?
操作系统启动一个进程并为其分配一个唯一的进程id并分配一个进程表。一个进程启动一个DVM(Dalvik VM)的实例;每个应用程序都在 DVM 中运行。
DVM 管理类加载卸载、实例生命周期、GC 等。

静态变量的生命周期:静态变量在类被 JVM 加载时存在,在类被卸载时死亡。

所以如果你创建一个android应用并初始化一个静态变量,它会一直保留在JVM中,直到发生以下情况之一:
1.类被卸载
2.JVM关闭
3.进程死亡

请注意,当您切换到另一个应用程序的不同 Activity 时,静态变量的值将保持不变,并且上述三个都不会发生。如果上述三种情况中的任何一种发生,静态将失去其值(value)。

你可以用几行代码来测试:

  1. 在您的 Activity 的 onCreate 中打印未初始化的静态 -> 应该打印 null
  2. 初始化静态。打印它 -> 值将不为空
  3. 点击返回按钮并转到主屏幕。注意:主屏幕是另一个 Activity 。
  4. 再次启动您的 Activity -> 静态变量将不为空
  5. 从 DDMS(设备窗口中的停止按钮)中终止您的应用程序进程。
  6. 重新启动您的 Activity -> 静态将具有空值。

希望对您有所帮助。

关于Android 静态对象生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1944369/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com