我应该将Application子类对象保留为成员还是局部变量?

时间:2013-10-22 13:02:12

标签: java member local-variables android

我想知道,我正在使用Application子类访问Activities中的一些全局数据。而且我想知道在性能和内存方面会有什么好处。

将应用程序对象分配给onCreate中的字段变量并将其作为mamber

进行访问是否更好?
Activity

 onCreate() {
     mApp = (MyApplication) getApplication()
 }

不要使用成员并每次调用getApplication并将其仅分配给局部变量?

MyApplication app = (MyApplication) getApplication()

据我所知,允许局部变量立即被垃圾收集,但成员必须保存在内存中。

由于我假设Application对象是一个大对象,是否可以将其保存在内存中或者是否应该允许它进行垃圾回收?

由于

1 个答案:

答案 0 :(得分:2)

Application对象始终在内存中。它只是它的参考,你要么作为一个字段成员缓存,要么每次为局部变量检索它。后者不会给你任何空间或时间的好处。

<小时/> Application对象及其所有子对象和孙对象仅存在于 heap 。方法getApplication()所做的就是将 address 返回到此对象树的 root 。无论对象树或每个对象元素有多长,地址/指针/引用大小都将保持不变。