有关生命周期方法定义的问题

时间:2019-06-05 16:24:12

标签: android android-lifecycle

我学习Android的时间大约是6个月,而这段时间我一直在描述Lifecycle方法,例如某种回调,当操作系统更改状态或配置时会“触发”。

问题:


1)例如,用户旋转屏幕。我认为,Android在调用回调时会调用一些接口和Activity来运行其代码。我不确定,因为我抛出了文档(Activity / Window / ... classes),却没有找到这个接口或类似的东西。用户旋转屏幕时会发生什么?


2)例如,用户按下移动应用程序上的按钮并创建新的活动。将调用生命周期方法,但操作系统状态或配置未更改。这意味着,我对生命周期方法的定义是错误的。如何正确描述?帮助我了解我的第一个定义出了什么问题。


我知道此链接:

https://developer.android.com/guide/components/activities/activity-lifecycle

有一行:

The Activity class provides a number of callbacks that allow the activity to know that a state has changed...

但是在Activity类中,例如:

@MainThread
@CallSuper
protected void onCreate(@Nullable Bundle savedInstanceState) {

而且我没有看到override字,那么Activity如何实现它? 有@CallSuper注解,但父类(包括Context)没有与生命周期相关的代码。那么这是真正的回调吗?

1 个答案:

答案 0 :(得分:1)

不确定您的问题,因为它含糊不清,但是让我尝试解决以下两个具体示例:

  

1)例如,用户旋转屏幕。我认为,Android呼唤   一些接口和Activity在回调到来时运行它的代码。我是   不确定,因为我扔了   文档(活动/窗口/ ...类),我没有找到这个   界面或类似的东西。当用户旋转   屏幕?

在通常情况下,当用户旋转屏幕时,会发生“配置更改”。 Android通过杀死当前处于活动状态的Activity来对此做出响应。 Android会在当前onPause(), onStop()上调用“生命周期方法”:onDestroy()Activity。然后,Android创建一个Activity的新实例,并在该实例上调用“生命周期方法”:onCreate(), onStart()onResume

如果应用程序声明要自己处理配置更改(通过为清单中的android:configChanges="..."指定Activity),Android 不会终止旋转屏幕时Activity。相反,Android会在当前onConfigurationChanged()上调用“生命周期方法”:Activity

  

2)例如,用户按下移动应用上的按钮并创建新   活动。将调用生命周期方法,但操作系统状态或   配置没有改变。这就是我对生命周期的定义   方法是错误的。如何正确描述?帮我了解   我的第一个定义有什么问题。

“生命周期方法”不仅指操作系统状态或配置的更改。还调用“生命周期方法”以将Activity本身状态的变化通知您的Activity。调用onCreate()来通知Activity Android刚刚创建了Activity的新实例,并且Activity应该初始化自己。调用onResume()来通知Activity,现在它是用户将看到的当前Activity(任务中最上方的Activity,并在屏幕上可见)。调用onPause()来通知Activity,另一个Activity将成为当前的Activity。调用onConfigurationChanged()来通知Activity设备上的配置已发生更改(这可以是许多不同的事物之一,包括:区域设置,屏幕尺寸,屏幕密度,屏幕方向,键盘状态等)。在Activity的生存期内,Android还会在特定时间调用其他许多“生命周期方法”。