如果我的任何应用程序组件已启动(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中注册的。我想知道静态实例字段的使用是否安全,并且总是会返回正确的值。 我以前没有使用内容提供商,但它也适用于内容提供商吗?
答案 0 :(得分:-3)
如果onCreate只能从一个线程访问,并且只创建一次,那么你应该没问题。有关如何以线程安全的方式实现Singleton的示例,请参阅此文章(尽管在C#中)。静态引用确实是线程安全的,只要你有一个静态初始化器。
http://www.codeinthemorning.com/design-patterns/singleton-pattern/