2015-11-21 5 views
0

Привет Я новичок в программировании и я пытаюсь создать простое приложение будильника в андроида может кто-нибудь помочь мне понять этот кодAndroid поможет понять код

public static AlarmActivity instance() { 
    return inst; 
} 

@Override 
public void onStart() { 
    super.onStart(); 
    inst = this; 
} 

Более подробный код here

ответ

0

Код, который вы отправили, является примером шаблона Singleton. И здесь идет цитата из википедии

... одноэлементный шаблон является шаблоном, который ограничивает экземпляра класса к одному объекту. Это полезно, когда точно необходим один объект для координации действий по всей системе. Концепция иногда обобщается на системы, которые работают больше эффективно, когда существует только один объект, или которые ограничивают экземпляр определенному числу объектов.

Обычно этот шаблон требует, чтобы конструктор объекта был закрыт, но это не возможно с помощью Android-операций.

Делая что

inst = this; 

деятельность «хранит себя» в переменную, которая будет позже, возвращаемой методом деЫпзЬапсе(). Использование этого patter позволит другим классам (другие действия, я думаю) использовать эту деятельность, просто вызывая AlarmActivity.getInstance() ..., что может быть полезно в некоторых случаях.

+0

Я бы предпочел избежать создания шаблона Singleton здесь, потому что это не типичный шаблон Singleton, используя ваши собственные слова: «Обычно этот шаблон требует, чтобы вы построили конструктор объекта private», и я также добавил бы, что действие может быть уничтожено и повторно - создаются несколько раз, в то время как одноэлемент обычно создается только один раз, и с этой точки один и тот же экземпляр будет использоваться повторно (никогда не воссоздаваться). – alfasin

+0

@alfasin, ну, я не сказал, что было бы неплохо использовать его здесь, но у разработчика могли быть свои причины для этого :) При правильном управлении жизненным циклом все должно быть хорошо. Хотя я действительно не понимаю, почему кому-нибудь понадобится инстанция Activity ... и откуда они будут получать доступ к ней. – Dogcat

+0

Я помню, как однажды я видел прецедент для этого поведения, я не могу вспомнить, что это было или если бы это могло быть сделано по-другому (и более элегантным образом ...). Если я найду его, я отправлю ссылку здесь. – alfasin

0

Saving указатель на this в переменной, характерной для Android-программирования: , он будет использоваться позже другими классами, которые не имеют доступа к this (потому что у них есть «разные» this), хотя им все еще может быть необходим доступ к контексту (Мероприятия).

+0

что такое использование этого кода public static AlarmActivity instance() { return inst; } –

+0

'inst' - текущий объект, текущий *** экземпляр ***' AlarmActivity', он получает назначение в одном из методов жизненного цикла: 'onStart()' – Skynet

+0

@InsaneAssassin as Skynet писал (а): как только вы создайте экземпляр Activity (AlarmActivity в вашем случае), вы сохраните указатель на этот экземпляр, используя 'inst'. Статический метод используется для доступа к этому экземпляру из любого места (другие классы и т. Д.). – alfasin

Смежные вопросы