- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在创建事件搜索应用程序,我们从一个屏幕设置搜索条件填充到另一个屏幕,然后用户可以从第 3 个屏幕编辑搜索条件并转到第 4 个屏幕。
为了完成上述任务,我使用了静态对象,它记住了应用程序周围的值,我不需要做任何额外的事情。
但是如果发现内存不足,我担心android中的静态对象生命周期会删除静态对象???
由于android支持多任务,如果用户切换到另一个应用程序并且当用户回来时应用程序开始疯狂,当它执行多任务时静态对象会被删除吗???任何想法 ??并且还建议通过单例方法保存静态对象是更好的方法???
最佳答案
让我们从一些背景知识开始:启动应用程序时会发生什么?
操作系统启动一个进程并为其分配一个唯一的进程id并分配一个进程表。一个进程启动一个DVM(Dalvik VM)的实例;每个应用程序都在 DVM 中运行。
DVM 管理类加载卸载、实例生命周期、GC 等。
静态变量的生命周期:静态变量在类被 JVM 加载时存在,在类被卸载时死亡。
所以如果你创建一个android应用并初始化一个静态变量,它会一直保留在JVM中,直到发生以下情况之一:
1.类被卸载
2.JVM关闭
3.进程死亡
请注意,当您切换到另一个应用程序的不同 Activity 时,静态变量的值将保持不变,并且上述三个都不会发生。如果上述三种情况中的任何一种发生,静态将失去其值(value)。
你可以用几行代码来测试:
希望对您有所帮助。
关于Android 静态对象生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1944369/
我正在开发一个使用多个 turtle 的滚动游戏。玩家 turtle 根据按键命令在 Y 轴上移动。当危害和好处在 X 轴上移动时,然后循环并改变 Y 轴位置。我尝试定义一个名为 colliding(
我不明白为什么他们不接受这个作为解决方案,他们说这是一个错误的答案:- #include int main(void) { int val=0; printf("Input:- \n
我正在使用基于表单的身份验证。 我有一个注销链接,如下所示: 以及对应的注销方法: public String logout() { FacesContext.getCurren
在 IIS7 应用程序池中有一个设置 Idle-time out 默认是 20 分钟,其中说: Amount of time(in minutes) a worker process will rem
我是一名优秀的程序员,十分优秀!