我正在开发一个Android应用程序,我写的方法可能会被调用很多次.在这个方法中,我正在更新用户界面.内存使用和性能对我来说很重要.我看到它的方式,我有2个选项来进行UI更改.
首先是每次都要制作新物品.这就是说:
public void myMethod(){
new View().makeVisible();
}
第二种是将对象声明为全局变量并在方法中引用它.这可能看起来像:
View myView = new View();
public void myMethod(){
myView.makeVisible();
}
显然,如果这种方法只调用了几次,那么任何差异都会很小.但是,如果我可能多次调用这个,并且有很多变量被调用/或以这种方式创建,那么第二种方式是否会提高性能?
最佳答案
正如其他答案所指出的那样,重复使用相同的对象而不是为每个方法调用重复实例化一个新对象将减少内存占用并提高垃圾收集的性能.
但我实际上会首先考虑可维护性.是否重用相同的对象会使您的代码更复杂(并可能引入错误)?在编程时记住效率是件好事,但要避免过早优化,这会使项目复杂化并减缓开发速度.
如果性能和内存使用是一个问题,那么是的,重用相同的视图将使您受益:
final View myView = new View(); //made final because it shouldn't be reassigned
如果你真的想要获得资源,你甚至可以懒惰地加载对象 – 也就是说,只在需要时立即创建它.但是我建议使用Guava的Suppliers.memoize(Supplier)
来处理这个问题而不是手工编码这种行为:
final Supplier
对于这种特殊情况,这可能是极端的.