首页 > 其他分享 >Android中四大组件Acticity面试常问的五道题

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

时间:2024-08-14 13:53:10浏览次数:8  
标签:生命周期 常问 启动 创建 栈中 实例 Activity Acticity Android

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,例如系统的闹钟页面。

标签:生命周期,常问,启动,创建,栈中,实例,Activity,Acticity,Android
From: https://blog.csdn.net/LIUCHANGSHUO/article/details/141189290

相关文章

  • Android 10.0 SystemUI下拉状态栏QSTileView去掉着色效果显示彩色图标功能实现
    1.前言在10.0的系统rom定制化开发中,在关于SystemUI的下拉状态栏中QSTileView的背景颜色设置过程中,在由于系统原生有着色效果,导致现在某些彩色背景显示不是很清楚效果不好,所以需要去掉QSTileView的默认着色背景显示原生的彩色背景,接下来就来实现相关功能如图: 2.SystemUI......
  • Android 13 GMS 内置壁纸
    如图,原生系统上,设备上的壁纸显示系统内置壁纸。如果没有添加内置壁纸,就显示默认的壁纸。点击进去就是预览页面扩展下,默认壁纸在frameworks/base/core/res/res/drawable-sw720dp-nodpi/default_wallpaper.pngframeworks/base/core/res/res/drawable-nodpi/default_wall......
  • RK3399 Android8.1静默安装APK
    在RK3399Android8.1上面,实现APK静默安装功能,下面是我们的测试验试过程:1.在RK3399Android8.1源码目录下生成系统签名KEY:  进入build/target/product/security目录:cdbuild/target/product/security  创建build_system_jks2.sh文件,内容如下:#!/bin/bashecho"生......
  • 如何使用Android WakeLock?
    在Android应用或者Framworks里面,要如何使用AndroidWakeLock来避免系统待机,或者系统息屏后加个锁进行网络等后台操作处理呢?我们可以在代码里面导入并创建相应对象,有如下内容:importandroid.os.PowerManager;importandroid.os.PowerManager.WakeLock;WakeLockmWakeLock;P......
  • Android Studio Gradle->Android Studio创建项目后,生成文件详解
    Gradle版本:gradle-8.0AndroidStudio版本:AndroidStudioGiraffe|2022.3.1Patch3.gradle文件夹作用:存储Gradle缓存和构建信息内容:包括Gradle构建缓存、已下载的依赖项等。这个文件夹可以安全地删除,Gradle会在下次构建时重新生成它.idea文件夹作用:存......
  • # Android开发 - FileWriter 类写入文件解析
    FileWriter是什么FileWriter是一个用于将字符数据写入文件中的类。在Java中,它使得文件的写入操作变得简单直观FileWriter继承自OutputStreamWriter类,进一步继承自WriterFileWriter构造方法FileWriter(StringfileName):创建一个FileWriter对象,用于写入指定文件......
  • Android开发 - File类文件操作解析
    File是什么File类用于处理文件和目录。它允许你创建、删除、读取和写入文件。你可以用它来获取文件路径、检查文件是否存在、获取文件大小等。例如,Filefile=newFile(context.getFilesDir(),"example.txt");可以用来在应用的私有目录中创建一个名为example.txt的文件......
  • Android之集成Unity及互相调用
    Unity官方文档DemoUnity与原生交互之AndroidStudio篇——Unity导出Android工程,导入AndroidStudio打包APK全流程Unity3D与Android交互问题一Error:Unity.IL2CPP.Building.BuilderFailedException:Buildfailedwith0successfulnodesand0failedonesError:Inte......
  • Android KTX
    AndroidKTX是包含在Android Jetpack 及其他Android库中的一组Kotlin扩展程序。KTX扩展程序可以为Jetpack、Android平台及其他API提供简洁的惯用Kotlin代码。为此,这些扩展程序利用了多种Kotlin语言功能,其中包括:扩展函数扩展属性Lambda命名参数参数默认值......
  • Android设置DisplayViewport
    //设置DisplayViewportperformTraversalLockedclearViewportsLocked();mViewports.clear();configureDisplayLocked(t,device);populateViewportLocked(viewportType.get(),display.getDisplayIdLocked(),device,info);finalDi......