Solution 1 :
You overrode the wrong onCreate
– you do not want to use the PersistableBundle
version. Change your onCreate
to only take the savedInstanceState: Bundle?
parameter:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Timber.d("onCreate") // Now it'll be called
}
Problem :
I have a simple case of Activity1 -> Activity2
.
In the past when I’ve used startActivity(Intent(this, Activity2::class.java))
there have been no issues and the onCreate()
method of Activity2
would be called.
In my current case this is not happening. I have logs in the onCreate()
method and they are never hit. But if I create a onStart()
method it enters there. However, never in my logs for the lifetime of the application does onCreate()
of Activity2
ever get hit. How is this possible. onCreate
is a requirement before onStart
I thought.
Here is the actual code I’m referencing above.
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)
}
}
}
Comments
Comment posted by Cayce K
Damn… I feel so dumb 🙁 Should I just delete this question? I don’t know how I messed that up.
Comment posted by ianhanniballake
Nah, it’ll probably help someone else down the line that runs into the exact same problem. Easy to miss when you’ve been staring at it for too long 🙂