android - 无头保留片段与具有公共静态变量的类(全局类)

时间:2014-10-03 11:11:41

标签: android performance android-fragments

我是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

问题:
我需要在整个应用程序中引用一个初始化对象。

问题:
哪个更好实施,一个好的做法,实用?或者是否有另一种方法可以在整个应用程序中存储对象的引用?

全局类已经在项目中使用,并且工作正常,但是这个实现有任何缺点吗?

1 个答案:

答案 0 :(得分:2)

  

这个实现有什么缺点吗?

内存泄漏,取决于您在那里存储的内容。泄漏是静态数据成员在经典Java中被认为是不良形式的原因,即使我们倾向于在Android应用程序开发中更多地使用它们。

此外,此数据需要被视为缓存,必须能够在首次访问时进行延迟创建。您的进程可以随时终止(擦除静态数据成员),用户可以返回应用程序中的任何活动(由最近任务列表提供)。如果您希望此数据在流程终止后继续存在,最可能的解决方案是将其保留在文件,数据库或SharedPreferences中。

尽管如此,保留的片段是每个活动的解决方案,而不是每个应用程序的解决方案,因此它不是您的方案AFAICT的有效替代方案。

相关问题