Статични блокове от класове, които не се извикват onCreate след onBackPressed

В моето приложение, когато се появи onCreate, извиквам статичен метод от друг клас. напр. ClassName.method(). Този втори клас съдържа статичен блок, който също се изпълнява при извикване на метода. Точно това искам да се случи.

Въпреки това, когато натисна бутона за връщане назад и се върна към приложението, onCreate се извиква отново (back причини изпълнението на onDestroy) и този друг метод се извиква, но статичният блок не. Това не е така, когато ръчно затворя приложението да не работи във фонов режим (техниката на плъзгане) и след това го отворя отново. В този конкретен случай се извиква статичният блок.

Защо статичният блок на класа не се извиква, когато приложението се рестартира след onBackPressed?

Благодаря ти.

Актуализация:

Струва ми се, че класът не се премахва от паметта дори след onDestroy при натискане на back. Останах с впечатлението, че всичко ще се инициализира отново, когато onCreate бъде извикан отново. Това обаче изглежда не е така. Има ли начин да премахнете класа при извикване на onDestroy?


person Romario    schedule 16.07.2014    source източник


Отговори (2)


Статичен блок в клас се извиква по време на инициализацията на класа. Тъй като един клас се зарежда (и инициализира) само веднъж, статичните блокове в него се извикват само веднъж.

Може би изобщо не трябва да използвате статичния блок. Просто поставете кода в статичен метод и го извикайте, когато пожелаете.

person Bhesh Gurung    schedule 16.07.2014
comment
Това е предложението, с което отидох. - person Romario; 19.07.2014

Доколкото разбирам въпроса ви, статичният блок не се изпълнява, защото класът вече е зареден.

class StaticTest { 

     static {
         // This will be executed once only. When the class is loaded and initialized.
     }

     static String s = "Exactly like this actually";
}

Но би било по-добре да видите съответната част от вашия код.

person Shlublu    schedule 16.07.2014
comment
Как мога да разтоваря класа onDestroy? - person Romario; 17.07.2014
comment
onDestroy() не е клас, а метод. Не може да се разтовари. Видях вашата актуализация и не, onDestroy() също не разтоварва класа. Четейки всичко това, мисля, че смесвате понятията клас и обекти. - person Shlublu; 17.07.2014
comment
Не, използвам onDestroy като глагол. Знам, че е метод. - person Romario; 19.07.2014