【问题标题】:Is it necessary to declare Singleton to access a single object in my all activities?是否有必要声明 Singleton 才能在我的所有活动中访问单个对象?
【发布时间】:2016-12-05 12:04:57
【问题描述】:

我正在构建一个菜单,用户可以从中选择项目。他们可以在必要时编辑他们的选择。单例将是一个包含所有可选项目列表的类。每当打开新活动时,单例都会具有所有项目的正确状态。

我问这个的原因是因为实现 Serializable 会创建该项目的一个新实例(尽管几乎相同)。

【问题讨论】:

  • 我没有明确问题。 Singleton 的目的是控制对象的创建,将对象的数量限制为一个。
  • 您可以使用单例,另一种选择是在您的主要活动中创建它并定义将在每次对其他活动之一进行选择时触发的 BroadcaseReceiver。

标签: android android-intent singleton serializable


【解决方案1】:

是的,您可以为此使用单例。它会是这样的:

public class MenuData {

    private static MenuData instance;

    private boolean isItemASelected;

    public static MenuData getInstance() {
        if (instance == null) {
            instance = new MenuData();
        }
        return instance;
    }

    public boolean isItemASelected() {
        return isItemASelected;
    }

    public void setItemASelected(boolean itemASelected) {
        isItemASelected = itemASelected;
    }

}

但是我不建议这样做。只要您的应用程序在内存中,这些数据就会一直存在。一旦您的应用被 Android 杀死,所有变量都将被清除并且状态将丢失。

如果您的菜单项是不变的,那么我建议您使用 SharedPreferences 来存储状态。如果它们是动态的,则使用 SQL 数据库。这样,即使您的应用程序被终止,这些选项也会保留。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多