我想知道,我正在使用Application子类访问Activities中的一些全局数据。而且我想知道在性能和内存方面会有什么好处。
将应用程序对象分配给onCreate中的字段变量并将其作为mamber
进行访问是否更好?Activity
onCreate() {
mApp = (MyApplication) getApplication()
}
或
不要使用成员并每次调用getApplication并将其仅分配给局部变量?
MyApplication app = (MyApplication) getApplication()
据我所知,允许局部变量立即被垃圾收集,但成员必须保存在内存中。
由于我假设Application对象是一个大对象,是否可以将其保存在内存中或者是否应该允许它进行垃圾回收?
由于
答案 0 :(得分:2)
Application
对象始终在内存中。它只是它的参考,你要么作为一个字段成员缓存,要么每次为局部变量检索它。后者不会给你任何空间或时间的好处。
Application
对象及其所有子对象和孙对象仅存在于 heap
。方法getApplication()
所做的就是将 address
返回到此对象树的 root
。无论对象树或每个对象元素有多长,地址/指针/引用大小都将保持不变。