启动任何组件后是否存在Application实例?

时间:2011-03-08 13:58:23

标签: singleton android

如果我的任何应用程序组件已启动(onCreate for Activity / Service,onReceived for BroadcastReceiver等),那么我的应用程序类的应用程序实例是否已经存在?

我的Application类

中有静态字段“instance”
  public class MyApplication extends Application {
private static MyApplication instance;

@Override
public void onCreate() {
    instance = this;
    super.onCreate();
}

    public MyApplication getInstance(){
         return instance;
    }

当然这个类是在manifest中注册的。我想知道静态实例字段的使用是否安全,并且总是会返回正确的值。 我以前没有使用内容提供商,但它也适用于内容提供商吗?

1 个答案:

答案 0 :(得分:-3)

如果onCreate只能从一个线程访问,并且只创建一次,那么你应该没问题。有关如何以线程安全的方式实现Singleton的示例,请参阅此文章(尽管在C#中)。静态引用确实是线程安全的,只要你有一个静态初始化器。

http://www.codeinthemorning.com/design-patterns/singleton-pattern/