You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中Fragment类内部定义的静态变量生命周期是怎样的?

问题解答

静态变量生命周期结论

你代码中定义的isCompleted静态变量作用域等同于整个应用进程的生命周期,不会随Fragment实例销毁同步销毁,只有整个应用进程被系统回收时才会被释放。

核心原因

  • 静态变量属于类本身,而非类的实例对象。只要AbstractFragment类被应用的类加载器加载到内存中,对应的静态变量就会一直存在,和你创建了多少个AbstractFragment子类的实例、这些实例是否被销毁没有关联。
  • Android平台的类加载是进程级别的,只要应用进程还在运行,类的静态存储区就不会被回收。哪怕你销毁了所有AbstractFragment子类的实例、甚至销毁了承载这些Fragment的Activity,isCompleted的值都会一直保留。

使用建议

如果没有全局共享的强需求,不建议在Fragment中定义静态变量存储状态,很容易出现内存泄漏和业务逻辑异常:

  • 如果是单个Fragment实例的自有状态,直接定义为非静态成员变量即可,变量会随Fragment实例的销毁同步回收。
  • 如果需要跨多个Fragment共享状态,更推荐通过宿主Activity的成员变量、或者生命周期感知的ViewModel组件实现,可以避免静态变量长期驻留内存的问题。

内容的提问来源于stack exchange,提问作者Anushiya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 06:48:02