Activity
1、A到B Activity过程中生命周期是怎么样的
当从 Activity A 启动 Activity B 时,Activity A 的生命周期会经历以下过程:
-
onPause():Activity A 会暂停,此时它仍然可见,但处于暂停状态,无法与用户交互。
-
onStop():如果 Activity B 完全覆盖了 Activity A,那么 Activity A 会停止,此时它不再可见。
-
onDestroy():如果系统资源紧张,或者 Activity A 不再需要,那么它可能会被销毁。
在 Activity B 启动后,它的生命周期会经历以下过程:
-
onCreate():Activity B 被创建。
-
onStart():Activity B 开始可见。
-
onResume():Activity B 恢复与用户的交互。
2、Activity 生命周期
理解 Activity 的生命周期对于正确管理应用程序的资源和响应用户交互非常重要。以下是 Activity 生命周期的主要阶段:
-
** onCreate(Bundle savedInstanceState)**:当 Activity 第一次创建时调用。这是进行初始化设置的地方,例如加载布局、初始化变量等。
-
** onStart()**:在 Activity 变为可见之前调用。此时 Activity 已经可见,但还没有获得焦点。
-
** onResume()**:在 Activity 获得焦点并准备与用户交互时调用。此时 Activity 处于前台,用户可以与它进行交互。
-
** onPause()**:当 Activity 失去焦点但仍然可见时调用。这通常发生在另一个 Activity 被启动或设备进入休眠状态时。在这个阶段,可以保存一些临时数据,但不能进行耗时操作。
-
** onStop()**:当 Activity 不再可见时调用。此时 Activity 已经停止,可能会被系统回收。在这个阶段,可以释放一些资源,但不能进行耗时操作。
-
** onDestroy()**:当 Activity 被销毁时调用。这是 Activity 生命周期的最后一个阶段,可以进行一些清理工作,例如释放资源、关闭数据库连接等。
3、Activity B是一个透明的Activity,从Activity A跳转到Activity B时,请问Activity A和Activity B的生命周期变化如何?
当从 Activity A 跳转到透明的 Activity B 时,Activity A 和 Activity B 的生命周期会发生以下变化:
-
Activity A 的生命周期:
-
onPause()
:Activity A 会暂停,失去焦点。 -
onStop()
:如果 Activity B 完全覆盖了 Activity A,Activity A 会停止,不再可见。
-
-
Activity B 的生命周期:
-
onCreate()
:Activity B 被创建。 -
onStart()
:Activity B 开始启动。 -
onResume()
:Activity B 获得焦点,成为前台 Activity。
-
4、请说下切换横竖屏时 Activity的生命周期变化?
-
竖屏切换到横屏:
-
onPause()
:Activity 失去焦点,进入暂停状态。 -
onSaveInstanceState(Bundle outState)
:系统会调用该方法,允许 Activity 保存当前状态信息。 -
onStop()
:Activity 停止,不再可见。 -
onDestroy()
:Activity 被销毁。 -
onCreate(Bundle savedInstanceState)
:重新创建 Activity,并传递之前保存的状态信息。 -
onStart()
:Activity 开始启动。 -
onResume()
:Activity 获得焦点,恢复运行。
-
5、请介绍Activity的4种启动模式?
-
standard(默认模式):
-
每次启动 Activity 时都会创建一个新的实例,并将其放入任务栈中。
-
这种模式适用于大多数情况,例如启动一个新的页面或者在不同的 Activity 之间进行跳转。
-
-
singleTop:
-
如果要启动的 Activity 已经位于任务栈的栈顶,则直接使用该实例,不会再创建新的实例。
-
如果要启动的 Activity 不在栈顶,则会创建一个新的实例并放入任务栈中。
-
这种模式适用于需要频繁启动但又不希望创建多个实例的 Activity,例如新闻详情页面。
-
-
singleTask:
-
每次启动 Activity 时,系统会先在任务栈中查找是否存在该 Activity 的实例。
-
如果存在,则直接使用该实例,并将其之上的所有其他 Activity 出栈,使其成为栈顶 Activity。
-
如果不存在,则创建一个新的实例并放入任务栈中。
-
这种模式适用于需要作为任务栈的根 Activity 的情况,例如应用的主页面。
-
-
singleInstance:
-
这种模式与 singleTask 类似,但是它会为每个 Activity 创建一个单独的任务栈。
-
也就是说,不同的 Activity 可以在不同的任务栈中,并且它们之间相互独立。
-
这种模式适用于需要在不同的任务栈中运行的 Activity,例如系统的闹钟页面。
-