Android中的Singleton类如何使用它?

时间:2018-03-26 03:53:17

标签: java android singleton

在Android中我试图了解Singleton类是什么以及如何使用它。它可以像全局变量一样使用吗?这意味着您可以将数据分配给Singleton类变量并在其他视图中获取它吗?

1 个答案:

答案 0 :(得分:5)

首先,我想定义一个单身人士是什么。单例是一种设计模式,它将类的瞬时限制为仅一个实例。值得注意的用途包括控制并发性,以及为应用程序创建访问其数据存储的中心访问点。在android中,这是非常方便的,因为我们需要一个应用程序才能从许多不同的活动中访问中央同步数据存储。

现在我们已经定义了一个单身人士,让我们回答你的问题,接着是一个简单的例子。

  • 它可以像全局变量一样使用吗?

它类似于全局变量,因为它可以从任何地方访问,但是在某种意义上它受到限制和控制,因为瞬时由单例执行而不是获取单例实例的类。因此,它允许更精细的控制级别,然后是全局变量。

  • 这意味着您可以将数据分配给Singleton类变量并在其他视图中获取它吗?

是的,您可以使用单例存储应用程序的模型数据,然后使用提供程序帮助程序方法,应用程序中的任何视图都可以通过获取保存该对象的对象实例来访问数据数据通过单身人士。

我现在将发布一个可以用作中央数据存储的单例的简单实现。

这是一个非常简单的单例,可用于访问客户对象列表。

public class CustomerLab {
  private static CustomerLab mCustLab;
  public List<Customer> mCustomers = new ArrayList<Customer>();

  /**
   * The private constructor for the Customer List Singleton class
   */
  private CustomerLab() {}

  public static CustomerLab getCustLab() {
    //instantiate a new CustomerLab if we didn't instantiate one yet
    if (mCustLab == null) {
        mCustLab = new CustomerLab();
    }
    return mCustLab;
  }
  //add methods here for insert, delete, search etc......
}

如您所见,此类具有私有构造函数,获取实例的唯一方法是使用预实例化对象的getCustLab()方法。这允许Android应用程序的所有部分获取相同的对象来访问数据存储,这意味着数据将位于中心位置并在应用程序的所有部分同步。

这是单例类在android中的基础以及如何应用它。