Какое событие Android вызывается только один раз, пока действие не будет уничтожено? - PullRequest
3 голосов
/ 27 января 2012

Я ищу один ответ (но, возможно, задаю не тот вопрос)

Вопрос - любое событие вызывается только ПОЛНОСТЬЮ, пока действие не будет уничтожено?

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

Я ищу событие, в которое я мог бы добавить поведение, которое будет запускаться только 1 раз (пока действие не будет убито)

Заранее спасибо

Ответы [ 4 ]

11 голосов
/ 27 января 2012

Если это специфично для Activity, просто проверьте ваш параметр saveInstanceState в событии onCreate.Если это значение равно null, запустите ваш код, если нет, ваш код уже был выполнен.

Пример:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    if(savedInstanceState == null) {
        // Run your code
    }        
}

saveInstanceState всегда будет нулевым при первом запуске onCreateи после этого он будет заселен.

1 голос
/ 27 января 2012

Если вы хотите исключить воссоздание своей активности в изменении ориентации, вы можете прослушать изменения в манифесте.

    <activity
            android:name=".MyActivity"
            android:configChanges="orientation" >
    </activity>

И тогда вы можете переопределить onCfigurationChanged следующим образом:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged( newConfig );

    LinearLayout main = (LinearLayout) findViewById( R.id.mainLayout );
    main.requestLayout();
}

для воссоздания макета так, чтобы он соответствовал новой ориентации, без воссоздания всего действия.

1 голос
/ 27 января 2012

Вы на самом деле не указываете, что вы пытаетесь сделать с этим, поэтому я не могу гарантировать, что это подходит для вашего использования, но Application.onCreate вызывается только один раз.

0 голосов
/ 27 января 2012

Установите флажок http://developer.android.com/guide/topics/resources/runtime-changes.html для обработки изменений конфигурации и сохранения ваших огромных данных между ними ... если все, что вам нужно поддерживать между изменениями конфигурации, это просто настройки, вы можете использовать onSavedInstanceState () и onRestoreInstanceState ( ) обратные вызовы и данные связки.

...