startActivity пропускает onCreate () - PullRequest
1 голос
/ 27 февраля 2020

У меня есть простой случай Activity1 -> Activity2.

В прошлом, когда я использовал startActivity(Intent(this, Activity2::class.java)), проблем не было, и вызывался метод onCreate() для Activity2.

В моем текущем случае этого не происходит. У меня есть логи в методе onCreate(), и они никогда не попадают. Но если я создаю onStart() метод, он входит туда. Тем не менее, ни разу в моих журналах за время существования приложения onCreate() из Activity2 никогда не попадало. Как это возможно. onCreate - это требование до onStart, подумал я.

Вот действительный код, на который я ссылаюсь выше.

class Activity1 : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        Timber.d("onCreate")

        setContentView(R.layout.activity_splash)

        startActivity(Activity2.getIntent(this))
    }
}

class Activity2 : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
        super.onCreate(savedInstanceState, persistentState)
        Timber.d("onCreate") // Never gets touched
    }

    override fun onStart() {
        super.onStart()
        Timber.d("onStart"); // Is hit with no problems.
    }

    companion object {
        fun getIntent(@NonNull context: Context) : Intent {
            return Intent(context, Activity2::class.java)
        }
    }
}

1 Ответ

8 голосов
/ 27 февраля 2020

Вы ошиблись onCreate - вы не хотите использовать версию PersistableBundle. Измените onCreate, чтобы он принимал только параметр savedInstanceState: Bundle?:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    Timber.d("onCreate") // Now it'll be called
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...