2012-02-07 31 views
0

在Android中,每当我们要继承的应用对象或延长它,以下列方式:什么是需要在子类的应用程序中编写静态单码对象

public class AndroidApplication extends Application{ 
.... 
} 

,然后作出的必要的修改清单文件。 需要写这行代码是什么?

public class AndroidApplication extends Application{ 

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

每当你要访问你的应用程序对象你会使用下面的代码来访问它:

MyApplication myapp = (MyApplication)getApplicationContext(); 

上面总是要回到你的应用程序类的一个静态对象。有什么需要写getinstance方法?我已经在几个博客和Android开发人员网站上看到,上面是做买卖的正确方式,我从来不明白为什么?

应用程序对象在应用程序开始运行时在内存中创建。在此之后,你不能对其进行重新初始化,这意味着你不能写这样的代码:

MyApplication myapp = new MyApplication(); 

而且即使你做你的,getInstance方法不会帮助。

预先感谢您。

回答

0

单设计模式(也是在更一般的情况下,这种设计模式是不是真的是个好主意。)非常适合在Android的应用程序对象:

你是对的,总之,这个类将由框架立即执行一次。

但是,开发人员仍然希望使用新的关键词来实现它,就像你所建议的那样。在这里,由于单例设计模式不仅包含getInstance方法,而且还包含了私有构造函数的定义,所以您似乎错失了某些东西,从而阻止了在get实例方法之外实例化类的可能性。

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

+0

好的,这是有道理的。但是有什么其他原因,我不应该实例化我的课程? – user590849 2012-02-07 14:06:07

+0

应用程序生命周期由android框架给出。创建这个类的新对象没有多大意义,因为您无法将其生命周期绑定到它所设计的生命周期中。 – Snicolas 2012-02-08 07:35:49

相关问题