Жизненный цикл Android, какое событие запускается только один раз в течение жизненного цикла?

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


person Bhavin Chauhan    schedule 30.04.2013    source источник
comment
проверьте мои отредактированные ответы --- ›stackoverflow.com/a/16293161/1168654   -  person Dhaval Parmar    schedule 30.04.2013
comment
всем спасибо. Я решил проблему с помощью всех вас. Я добавил этот метод onRetainNonConfigurationInstance () и получил желаемое решение .. Спасибо всем вам ..   -  person Bhavin Chauhan    schedule 30.04.2013
comment
также добавлен android: configChanges = direction | keyboardHidden | screenSize в файл AndroidManifest.xml ..   -  person Bhavin Chauhan    schedule 30.04.2013


Ответы (3)


введите описание изображения здесь

onCreate и onDestroy id срабатывают только один раз.

onCreate: Вызывается при первом создании действия. Здесь вы должны выполнять все ваши обычные статические настройки: создавать представления, связывать данные со списками и т. Д.

onDestroy: последний звонок, который вы получите перед тем, как ваша деятельность будет уничтожена. Это может произойти либо потому, что действие заканчивается.

Итак, поместите свой код события в onCreate. (но это зависит от ваших требований, то, что вы пытаетесь сделать, ваш код может быть изменен)


Последовательность действий:

сначала вызывается onCreate -> Далее -> onStart -> onResume -> Ваша активность выполняется, чтобы показать вам ваш макет. (все, что вы поместили в свой layout.xml)

теперь, если вы нажмете кнопку HOME, она перейдет к -> onPause -> onStop. (Действие не уничтожает его работу в фоновом режиме). теперь снова откройте Activity, перейдите к -> onRestart -> onStart -> onResumme (активность снова запущена).

теперь, если вы нажмете кнопку «Назад», тогда -> onPause -> onStop -> onDestroy.


Отредактировано:

для остановки перезапуска активности при изменении ориентации

android:configChanges="orientation|keyboardHidden" в файле манифеста Android.

<activity android:name=".MyActivity"
          android:configChanges="orientation|keyboardHidden"
          android:label="@string/app_name">

если вы разрабатываете для уровня API 13 или выше, вы должны использовать

android:configChanges="orientation|screenSize"
person Dhaval Parmar    schedule 30.04.2013
comment
спасибо Дхавалу Содха за ответ Я упоминаю в вопросе, что знаю, что метод onCreate () сработал один раз, но теперь моя проблема в том, что если я изменю свою ориентацию, это событие сработает снова .. - person Bhavin Chauhan; 30.04.2013
comment
Дхавал Содха, ваш ответ не является полным, но, возможно, это поможет кому-то еще !! - person Bhavin Chauhan; 30.04.2013

Создайте фиктивное приложение, переопределите onCreate, onStart, onResume, onPause, onDestroy, onRestart поместите туда Log.d("MYAPP", "onXXX called") и посмотрите сами, что и в каком порядке вызывается.

Таким образом, вы узнаете что-то на практике раз и навсегда.

person Alexander Kulyakhtin    schedule 30.04.2013

Вы можете использовать настройки в onCreate ().

SharedPreferences prefs = PreferenceManager
                .getDefaultSharedPreferences(this);
        if (!prefs.getBoolean("firstTime", false)) {

// run your one time code


            SharedPreferences.Editor editor = prefs.edit();
            editor.putBoolean("firstTime", true);
            editor.commit();
        }
person Chintan Soni    schedule 30.04.2013
comment
Вероятно, предпочтение следует сбросить, когда пользователь выходит из приложения, потому что оно сохраняется на протяжении всей жизни приложения. Но для этого некуда ... - person Alexander Kulyakhtin; 30.04.2013
comment
спасибо shree202 за ответ, но если бы я сохранил значение в SharedPreferences, чем если бы пользователь запускал приложение во второй раз (а не только активность), это не могло дать мне лучший результат. - person Bhavin Chauhan; 30.04.2013
comment
Почему ?? в чем проблема ? пожалуйста опишите это. - person Chintan Soni; 30.04.2013
comment
Настройки @Alex никогда не сбрасываются. Подумайте, если вы сбросите настройки, когда приложение существует, то какой от него толк ...! Предпочтения предназначены для сохранения установленных вами значений. - person Chintan Soni; 30.04.2013
comment
shree202, если в своей деятельности я написал ваш код в событии onCreate () и сохранил значение firstTime равным true после выполнения моего кода после завершения этого действия, если пользователь снова запускает действие, чем значение SharedPreferences уже истинно, и мой код не будет выполняться. - person Bhavin Chauhan; 30.04.2013
comment
в таком случае, не могли бы вы четко и кратко объяснить, чего вы хотите достичь? - person Chintan Soni; 30.04.2013
comment
@ shree202 У меня есть одно мероприятие, в котором у меня есть 2 разных макета, у меня есть один метод привязки некоторой информации. а привязать хочу только один раз, когда активность загорелась. означает, что если пользователь изменит ориентацию, этот метод не должен запускаться. в вашем решении, если пользователь запускает приложение, и он / она посещает это действие после этого, если пользователь принудительно закрыл приложение и снова посмотрел, чем SharedPreferences уже имеет значение true, поэтому мой метод не будет работать. - person Bhavin Chauhan; 30.04.2013
comment
Пожалуйста, разместите свой код. Это действие, в котором вы хотите реализовать этот механизм. - person Chintan Soni; 30.04.2013
comment
Означает, что вы выполняете какую-то задачу с помощью AsyncTask и не хотите, чтобы эта задача повторялась при изменении ориентации. Я прав ?? - person Chintan Soni; 30.04.2013
comment
@ shree202 как я могу решить свою проблему? есть какие-нибудь идеи в твоей голове? - person Bhavin Chauhan; 30.04.2013
comment
Отметьте stackoverflow.com/questions/1111980/ - person Chintan Soni; 30.04.2013
comment
@Bhavin Chauhan Помогла ли вам приведенная выше ссылка, которую я прокомментировал? Нет полностью, но до некоторой степени ... ?? - person Chintan Soni; 30.04.2013
comment
ваша опубликованная ссылка слишком хороша ... и, возможно, это решило мою проблему сбоя моего приложения, а не мою опубликованную проблему !! - person Bhavin Chauhan; 30.04.2013
comment
проверьте stackoverflow.com/questions/7842691/ , stackoverflow.com/questions/2967903/ - person Chintan Soni; 30.04.2013
comment
comment
Хорошо, отметьте этот ответ принятым, опубликуйте свой правильный код, как вы нашли решение своей проблемы, чтобы другие могли учиться у вас и продолжать работать так. Так держать. - person Chintan Soni; 30.04.2013
comment
Я действительно счастлив, что смог помочь тебе, наконец. - person Chintan Soni; 30.04.2013