Существует ли экземпляр приложения после запуска какого-либо компонента? - PullRequest
3 голосов
/ 08 марта 2011

Должен ли я быть уверен, что если какой-либо из моих компонентов приложения запущен (onCreate для Activity / Service, onReceived для 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;
    }

Конечно, этот класс зарегистрирован в манифесте. Интересно, безопасно ли использовать статическое поле экземпляра и всегда будет возвращать мне правильное значение? Я раньше не использовал контент-провайдеров, но будет ли он работать и для контент-провайдеров?

1 Ответ

0 голосов
/ 09 марта 2011

Если onCreate может быть доступен только из одного потока и создается только один раз, у вас все будет в порядке. Посмотрите этот пост для примера того, как реализовать Singleton потокобезопасным способом (хотя в C #). Статическая ссылка действительно поточно-ориентированная, если у вас также есть статический инициализатор.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...