我是Android项目的一部分,该项目使用包含公共静态变量的全局类,如下例所示:
public class Globals {
public static MyObject variable = "this is a test";
}
在使用应用程序的过程中,这个全局变量的值将被改变,让我们说:
@Override
public void onCreate(Bundle savedInstanceState) {
Globals.variable = new MyObject(somethingHere);
}
我从这些博文中看到了Headless Retained Fragments: http://www.androiddesignpatterns.com/2013/04/retaining-objects-across-config-changes.html http://www.vogella.com/tutorials/AndroidFragments/article.html#headlessfragments
问题:
我需要在整个应用程序中引用一个初始化对象。
问题:
哪个更好实施,一个好的做法,实用?或者是否有另一种方法可以在整个应用程序中存储对象的引用?
全局类已经在项目中使用,并且工作正常,但是这个实现有任何缺点吗?
答案 0 :(得分:2)
这个实现有什么缺点吗?
内存泄漏,取决于您在那里存储的内容。泄漏是静态数据成员在经典Java中被认为是不良形式的原因,即使我们倾向于在Android应用程序开发中更多地使用它们。
此外,此数据需要被视为缓存,必须能够在首次访问时进行延迟创建。您的进程可以随时终止(擦除静态数据成员),用户可以返回应用程序中的任何活动(由最近任务列表提供)。如果您希望此数据在流程终止后继续存在,最可能的解决方案是将其保留在文件,数据库或SharedPreferences
中。
尽管如此,保留的片段是每个活动的解决方案,而不是每个应用程序的解决方案,因此它不是您的方案AFAICT的有效替代方案。