这两种方法在这些变量的生命周期方面是否存在任何差异?
据我所知,在这两种情况下,当应用程序从内存中清除时,foo会收集垃圾
端。 (对吗?还是我错过了什么?)
选项1:在Application类中存储静态变量:
public class App extends android.app.Application {
private static SomeClass foo;
public static init setSomeObject(SomeClass someValue){
foo = someValue;
}
public static SomeClass getSomeObject(){
return foo;
}
}
选项2:在任何静态类中串一个静态变量?
public class JustSomeClass {
private static SomeClass foo;
public static init setSomeObject(SomeClass someValue){
foo = someValue;
}
public static SomeClass getSomeObject(){
return foo;
}
}
我更喜欢第二种,纯粹是为了更好的可读性,因为我不希望我的Application类增长得太大,但我需要知道它是否有任何缺点。
答案 0 :(得分:2)
我同意GhostCat和Chetan。 我也觉得必须避免使用静态以避免过多的内存使用。
我更喜欢为每个进程创建一个单例类,例如,处理我的应用程序中的屏幕流,或编写数据库操作的辅助方法或我应用程序中许多活动/片段使用的常用方法。
This链接对Application class vs. Singleton进行了很好的讨论。
答案 1 :(得分:1)
从概念上讲, static 是良好OO设计中的异常。因此,当您询问最佳实践时,首先要考虑首先使用不 static 的设计。
除此之外:你的课程应该类似于"事物的有用的模型。你打算建造。你不会在这里放东西&#34 ;;你把它放在......它从概念上来说属于它。