Невозможно доверять текущему состоянию жизненного цикла AAC

Краткое описание проблемы

getLifecycle().getCurrentState() дал мне неправильное состояние.

Среда (интегрированная библиотека, ОС и т. Д.)

  • compileSdkVersion: 27
  • targetSdkVersion: 27
  • поддержка библиотеки: 27.1.1

Ожидаемое поведение

  • onCreate () -> СОЗДАН
  • onStart () -> НАЧАЛО
  • onResume () -> ВОЗОБНОВЛЕНО
  • onPause() -> НАЧАЛО
  • onStop () -> СОЗДАН
  • onDestroy () -> УНИЧТОЖЕНО

Фактическое поведение

  • onCreate: ИНИЦИАЛИЗИРОВАННЫЙ
  • onStart: СОЗДАН
  • на Резюме: НАЧИНАЕТСЯ
  • onPause: НАЧАЛО
  • onStop: СОЗДАН
  • onDestroy: УНИЧТОЖЕНО

Подробно о выпуске

Я попытался с помощью приведенного ниже кода. Я искал в Google, но никто не думает об этом странно. Мне чего-то не хватает?

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        Log.i(MainActivity::class.java.name, "onCreate : " + lifecycle.currentState.name)
    }

    override fun onStart() {
        super.onStart()
        Log.i(MainActivity::class.java.name, "onStart : " + lifecycle.currentState.name)
    }

    override fun onResume() {
        super.onResume()
        Log.i(MainActivity::class.java.name, "onResume : " + lifecycle.currentState.name)
    }

    override fun onPause() {
        super.onPause()
        Log.i(MainActivity::class.java.name, "onPause : " + lifecycle.currentState.name)
    }

    override fun onStop() {
        super.onStop()
        Log.i(MainActivity::class.java.name, "onStop : " + lifecycle.currentState.name)
    }

    override fun onDestroy() {
        super.onDestroy()
        Log.i(MainActivity::class.java.name, "onDestroy : " + lifecycle.currentState.name)
    }
}

1 ответ

Ваше реальное поведение - это ожидаемое поведение, если вы посмотрите документацию: https://developer.android.com/topic/libraries/architecture/lifecycle

жизненный цикл

Думайте о состояниях как об узлах графа, а о событиях как о границах между этими узлами.