我学习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)没有与生命周期相关的代码。那么这是真正的回调吗?
答案 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还会在特定时间调用其他许多“生命周期方法”。