Выполнить метод, когда активность видна пользователю

У меня активность содержит слишком много элементов управления пользовательского интерфейса. Я хочу выполнить метод, чтобы сделать активность видимой.

Пример, который я попробовал:

public class Main extends Activity{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MyMethod(); } private void MyMethod(){ Toast.makeText(this, "Hi UI is fully loaded", Toast.LENGTH_SHORT).show(); } } 

Но в приведенном выше примере сообщение отображается до того, как действие будет видимым.

Есть ли способ узнать, активна ли деятельность?

Переместите свой код в onResume

 @Override protected void onResume() { super.onResume(); MyMethod(); } 

Проверка жизненного цикла деятельности

http://developer.android.com/reference/android/app/Activity.html

 protected void onResume () 

Вызывается после onRestoreInstanceState (Bundle), onRestart () или onPause (), чтобы ваша активность начала взаимодействовать с пользователем. Это хорошее место для начала анимации, открытия устройств с эксклюзивным доступом (например, камеры) и т. Д.

Имейте в виду, что onResume не лучший индикатор того, что ваша активность видна пользователю; Системное окно, такое как блокировка клавиатуры, может быть впереди. Используйте onWindowFocusChanged (boolean), чтобы точно знать, что ваша активность видна пользователю (например, для возобновления игры).

Производные классы должны обращаться к реализации этого класса суперкласса. Если они этого не сделают, будет выбрано исключение.

Переместите код на onResume .

Система вызывает этот метод каждый раз, когда ваша деятельность выходит на передний план, в том числе когда она создается впервые. Читать подробности для приостановки и возобновления деятельности

 @Override protected void onResume() { super.onResume(); MyMethod(); } 

Подробнее о жизненном цикле активности Android – для чего все эти методы?

Вызов MyMethod() в onResume() действия

Согласно документации onResume() Вызывается, когда действие начнет взаимодействовать с пользователем. На этом этапе ваша деятельность находится в верхней части стека активности, при этом пользовательский ввод идет к ней.

 protected void onResume() { super.onResume(); MyMethod(); } 

Нет реального обратного вызова, который вызывается, именно в это время активность видима. Но, как вы можете видеть на прилагаемой картинке, метод onResume() вызывается только тогда, когда действие должно быть видимым.

Также ознакомьтесь с жизненным циклом деятельности и документацией ЗДЕСЬ

Поэтому ваш метод должен быть вызван следующим образом:

 @Override public void onResume() { super.onResume(); MyMethod(); } 

Картина

 // try this @Override public void onAttachedToWindow() { super.onAttachedToWindow(); Toast.makeText(this, "Hi UI is fully loaded", Toast.LENGTH_SHORT).show(); }