Непонятное поведение жизненного цикла Android Activity - PullRequest
0 голосов
/ 24 сентября 2010

Я сделал простую программу, переопределив каждый из методов жизненного цикла, и все работает, как я ожидал, за исключением onRestoreInstanceState(Bundle savedInstanceState).

Я переопределил метод как

@Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);   
    Toast.makeText(getBaseContext(), "onRestoreInstanceState - Activity1 ", Toast.LENGTH_SHORT).show();
    }

Но он никогда не вызывается.

Я тоже переопределил onSaveInstanceState(Bundle outState), и я вижу, что система вызывает его, но никогда не onRestoreInstanceState(Bundle savedInstanceState).Когда я нажимаю кнопку «назад» или около того, я вижу, что системные вызовы onRestore(), OnStart() и onResume() и пользовательский интерфейс (всего две кнопки) отображаются правильно.

Как это возможно, чтопользовательский интерфейс восстанавливается без вызова onRestoreInstanceState(Bundle savedInstanceState)?Я только setContentView(R.layout.main) это onCreate(savedInstanceState).Так как же восстановить пользовательский интерфейс без вызова onCreate() или onRestoreInstanceState()?

Было бы очень признательно, если бы кто-то пролил некоторый свет на это.

Спасибо.

1 Ответ

0 голосов
/ 09 декабря 2010

Документация здесь немного сбивает с толку, но я думаю, что этот метод предназначен только в качестве своего рода замены для обработки сохраненного состояния onCreate, происходящей позже в цикле. Он вызывается только если действие уничтожено и воссоздано с помощью состояния; это чаще всего случается во время смены ориентации. Он не предназначен для обработки состояния во время обычных переходов между действиями.

См. Также onSaveInstanceState () и onRestoreInstanceState ()

...