may*_*ysi 35 java static android
当我在主活动中声明并初始化变量为静态并且活动被销毁时.我还可以访问变量的内容吗?
例如,要始终访问我存储到此变量的AsyncTask?我想要的是能够在方向改变后访问它.
Tar*_*ney 19
静态变量与类相关联,只要类在内存中,它们就会存在,并在类被卸载时消失(很少发生).
在Android中,您已经看到当我们关闭任何应用程序时它并没有完全关闭,它仍然保留在最近的应用程序堆栈中,您可以通过按住主页按钮(大多数设备上)来查看.
当其他应用程序需要内存时,Android本身会踢出最近的应用程序
小智 5
静态变量与类本身相关联。只要类在内存中,变量就会被保留。
类很少被垃圾收集,因为它们存在于所谓的Permanent Generation内存空间中(您可以在此处找到有关分代 GC 如何工作的更多信息https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index .html)。
您可以查看https://developer.android.com/topic/performance/memory-overview以更好地了解 Android 中的内存管理方式,但除非您的应用正在执行非常不寻常的操作,否则会分配永久代它需要保存所有类的所有内存,并且不会被垃圾收集。
方向更改不会清除静态变量,但是如果这是您的目标,则使用静态变量不是很合适。您可以通过使用setRetainInstance或类似方法在方向更改时保持实例状态(请参阅Android:如何防止在方向更改时清除类变量以获得答案)
| 归档时间: |
|
| 查看次数: |
21665 次 |
| 最近记录: |