0

在 android 中,每当我们必须对应用程序对象进行子类化或扩展时,使用以下方式:

public class AndroidApplication extends Application{
....
}

然后在清单文件中进行必要的更改。写这行代码需要什么?

public class AndroidApplication extends Application{

private static AndroidApplication sInstance;
 public static AndroidApplication getInstance() {
  return sInstance;
}
....
}

每当您要访问您的 Application 对象时,您将使用以下代码访问它:

MyApplication myapp = (MyApplication)getApplicationContext();

以上总是会返回您的 Application 类的一个静态对象。写getinstance方法需要什么?我在几个博客和 android 开发者网站上读到以上是正确的购买方式,我一直不明白为什么?

Application 对象是在 Application 开始运行时在内存中创建的。在此之后您无法重新初始化它,这意味着您无法编写此代码:

MyApplication myapp = new MyApplication();

即使你这样做了,getInstance 方法也无济于事。

先感谢您。

4

1 回答 1

0

单一设计模式(也在更一般的上下文中,这种设计模式并不是一个好主意..)非常适合 android 中的应用程序对象:

你是对的,无论如何,这个类将被框架实例化一次。

但是开发人员仍然可以按照您的建议使用新的关键字来实例化它。在这里,您似乎遗漏了一些东西,因为单例设计模式不仅包括 getInstance 方法,还包括私有构造函数的定义,从而防止在 get 实例方法之外实例化类的可能性。

所以,是的,单例模式可以在这里应用,这是一个好主意,只是为了强制没有开发人员应该实例化这个类的事实,唯一的实例将由 android 框架创建。

于 2012-02-07T13:56:26.407 回答