Разница между onCreate() и onStart()?

Возможный дубликат:
Android Жизненный цикл активности — разница между onPause() и OnStop()

Мне интересно - в чем разница между методами onCreate() и onStart()?

Я думаю, что onStart() - избыточный метод. onCreate() будет вызываться ВСЕГДА (по крайней мере, в моих последних двух проектах).

Кто-нибудь может объяснить разницу?


person iTurki    schedule 25.07.2011    source источник


Ответы (2)


Взгляните на жизненный цикл Activity введите здесь описание изображения

Где

***onCreate()***

Вызывается при первом создании действия. Здесь вы должны выполнить всю обычную статическую настройку: создать представления, привязать данные к спискам и т. д. Этот метод также предоставляет вам пакет, содержащий ранее замороженное состояние активности, если оно было. Всегда следует onStart().

***onStart()***

Вызывается, когда действие становится видимым для пользователя. За ним следует onResume(), если активность выходит на передний план, или onStop(), если она становится скрытой.

И вы можете написать свой простой класс, чтобы посмотреть, когда эти методы вызывают

public class TestActivity extends Activity {
    /** Called when the activity is first created. */

    private final static String TAG = "TestActivity";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Log.i(TAG, "On Create .....");
    }
    /* (non-Javadoc)
    * @see android.app.Activity#onDestroy()
    */
    @Override
    protected void onDestroy() { 
        super.onDestroy();
        Log.i(TAG, "On Destroy .....");
    }
    /* (non-Javadoc)
    * @see android.app.Activity#onPause()
    */
    @Override
    protected void onPause() { 
        super.onPause();
        Log.i(TAG, "On Pause .....");
    }

    /* (non-Javadoc)
    * @see android.app.Activity#onRestart()
    */
    @Override
    protected void onRestart() {
        super.onRestart();
        Log.i(TAG, "On Restart .....");
    }

    /* (non-Javadoc)
    * @see android.app.Activity#onResume()
    */
    @Override
    protected void onResume() {
        super.onResume();
        Log.i(TAG, "On Resume .....");
    }

    /* (non-Javadoc)
    * @see android.app.Activity#onStart()
    */
    @Override
    protected void onStart() {
        super.onStart();
        Log.i(TAG, "On Start .....");
    }
    /* (non-Javadoc)
    * @see android.app.Activity#onStop()
    */
    @Override
    protected void onStop() {
        super.onStop();
        Log.i(TAG, "On Stop .....");
    }
}

Надеюсь, это развеет ваше замешательство.

Подробнее см. здесь.

Методы жизненного цикла в деталях — очень хороший пример. и демонстрационное приложение, которое является очень хорошей статьей для понимания жизненного цикла.

person Pankaj Kumar    schedule 25.07.2011

Метод onCreate() вызывается при создании активности и вызывается только один раз за весь жизненный цикл активности. где, когда onStart() вызывается, когда активность остановлена... Я имею в виду, что она перешла в фоновый режим, и ее метод onStop() вызывается ОС. onStart() может вызываться несколько раз в жизненном цикле Activity. Подробнее здесь

person ngesh    schedule 25.07.2011
comment
Метод onCreate() вызывается при создании активности, а метод onStart() вызывается, когда активность исходит из onPause() или onResume(). - person Rehan Sarwar; 27.07.2017
comment
onCreate() будет вызываться в двух сценариях: один при первом создании активности, а второй при изменении конфигурации активности. Обязательно внедрить onCreate() в нашу деятельность. onStart() можно вызывать несколько раз. Не обязательно реализовывать onStart(). - person Danger; 18.06.2021