为什么首选 OnCreate 来执行所有主要的应用程序任务?

Why Is OnCreate Preferred To Do All The Main App Tasks?

为什么 onCreate() 首选执行所有主要应用程序任务?为什么不是 onResume()onStart()?为什么只有 onCreate()?我尝试完成主要任务,例如绑定 findViewById() 将文本设置为文本视图等等。他们都工作正常。为什么我们总是喜欢在 onCreate() 中完成该任务?

OnCreate 是您 activity 的第一个入口点,因此从逻辑上讲,在这里进行尽可能多的初始化是有意义的。通常情况下,需要配置更高优先级的东西——崩溃报告服务、依赖注入等,这会升级到自定义应用程序 class.

根据the docs

protected void onCreate (Bundle savedInstanceState)

Called when the activity is starting. This is where most initialization should go: calling setContentView(int) to inflate the activity's UI, using findViewById(int) to programmatically interact with widgets in the UI...

所以,我想可以公平地说大多数 初始化 将在 onCreate 内部完成,这通常意味着如果您将其放入生命周期方法中,它可以重复执行,这可能被认为是多余的,因为您会重复为变量分配相同的值,除非那是您真正想要做的事情。

但是,惰性初始化也是一个需要牢记的概念,能够在 onCreate 内部初始化某些东西并不总是意味着您应该这样做,延迟初始化通常要等到您真正需要实例时更好。

关于

I tried to do the main tasks like binding findViewById() setting text to text views and a lot more. They all work fine.

他们肯定会,findViewById 始终可以使用,并不限于在 onCreate 内部,事实上 findViewById 的结果甚至不必分配给变量就可以使用它