Android中四大组件Acticity面试常问的五道题

Activity

1、A到B Activity过程中生命周期是怎么样的

当从 Activity A 启动 Activity B 时,Activity A 的生命周期会经历以下过程:

  1. onPause():Activity A 会暂停,此时它仍然可见,但处于暂停状态,无法与用户交互。

  2. onStop():如果 Activity B 完全覆盖了 Activity A,那么 Activity A 会停止,此时它不再可见。

  3. onDestroy():如果系统资源紧张,或者 Activity A 不再需要,那么它可能会被销毁。

在 Activity B 启动后,它的生命周期会经历以下过程:

  1. onCreate():Activity B 被创建。

  2. onStart():Activity B 开始可见。

  3. onResume():Activity B 恢复与用户的交互。

2、Activity 生命周期

理解 Activity 的生命周期对于正确管理应用程序的资源和响应用户交互非常重要。以下是 Activity 生命周期的主要阶段:

  1. ** onCreate(Bundle savedInstanceState)**:当 Activity 第一次创建时调用。这是进行初始化设置的地方,例如加载布局、初始化变量等。

  2. ** onStart()**:在 Activity 变为可见之前调用。此时 Activity 已经可见,但还没有获得焦点。

  3. ** onResume()**:在 Activity 获得焦点并准备与用户交互时调用。此时 Activity 处于前台,用户可以与它进行交互。

  4. ** onPause()**:当 Activity 失去焦点但仍然可见时调用。这通常发生在另一个 Activity 被启动或设备进入休眠状态时。在这个阶段,可以保存一些临时数据,但不能进行耗时操作。

  5. ** onStop()**:当 Activity 不再可见时调用。此时 Activity 已经停止,可能会被系统回收。在这个阶段,可以释放一些资源,但不能进行耗时操作。

  6. ** onDestroy()**:当 Activity 被销毁时调用。这是 Activity 生命周期的最后一个阶段,可以进行一些清理工作,例如释放资源、关闭数据库连接等。

3、Activity B是一个透明的Activity,从Activity A跳转到Activity B时,请问Activity A和Activity B的生命周期变化如何?

当从 Activity A 跳转到透明的 Activity B 时,Activity A 和 Activity B 的生命周期会发生以下变化:

  1. Activity A 的生命周期:

    • onPause():Activity A 会暂停,失去焦点。

    • onStop():如果 Activity B 完全覆盖了 Activity A,Activity A 会停止,不再可见。

  2. Activity B 的生命周期:

    • onCreate():Activity B 被创建。

    • onStart():Activity B 开始启动。

    • onResume():Activity B 获得焦点,成为前台 Activity。

4、请说下切换横竖屏时 Activity的生命周期变化?

  1. 竖屏切换到横屏:

    • onPause():Activity 失去焦点,进入暂停状态。

    • onSaveInstanceState(Bundle outState):系统会调用该方法,允许 Activity 保存当前状态信息。

    • onStop():Activity 停止,不再可见。

    • onDestroy():Activity 被销毁。

    • onCreate(Bundle savedInstanceState):重新创建 Activity,并传递之前保存的状态信息。

    • onStart():Activity 开始启动。

    • onResume():Activity 获得焦点,恢复运行。

5、请介绍Activity的4种启动模式?

  1. standard(默认模式):

    • 每次启动 Activity 时都会创建一个新的实例,并将其放入任务栈中。

    • 这种模式适用于大多数情况,例如启动一个新的页面或者在不同的 Activity 之间进行跳转。

  2. singleTop:

    • 如果要启动的 Activity 已经位于任务栈的栈顶,则直接使用该实例,不会再创建新的实例。

    • 如果要启动的 Activity 不在栈顶,则会创建一个新的实例并放入任务栈中。

    • 这种模式适用于需要频繁启动但又不希望创建多个实例的 Activity,例如新闻详情页面。

  3. singleTask:

    • 每次启动 Activity 时,系统会先在任务栈中查找是否存在该 Activity 的实例。

    • 如果存在,则直接使用该实例,并将其之上的所有其他 Activity 出栈,使其成为栈顶 Activity。

    • 如果不存在,则创建一个新的实例并放入任务栈中。

    • 这种模式适用于需要作为任务栈的根 Activity 的情况,例如应用的主页面。

  4. singleInstance:

    • 这种模式与 singleTask 类似,但是它会为每个 Activity 创建一个单独的任务栈。

    • 也就是说,不同的 Activity 可以在不同的任务栈中,并且它们之间相互独立。

    • 这种模式适用于需要在不同的任务栈中运行的 Activity,例如系统的闹钟页面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

L.2626

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值