Android 四大组件面试

Android 四大组件面试

前言

仅用于知识点简介,详细描述建议百度,主要是一些个人的理解总结,可以在面试时来回答,所以并不是很详细,只是总结~ 后续应该会不断更新
Activity、Service、BroatcastReceiver、ContentProvider

1. Activity

活动页面

  • 生命周期:
    • onCreate()、onStart()、onResume()、onPause()、onStop() 和 onDestroy()
    • Activity 跳转时:A -> B,A onPause() -> B onCreate() -> B onStart() -> B onResume() -> B onStop(),最后一步 A onStop 如果 B 是半透明即 A 依然可见,那么就不会调用
- 四个状态:
    1. running->当前显示在屏幕的activity(位于任务栈的顶部),用户可见状态。
    2. poused->依旧在用户可见状态,但是界面焦点已经失去,此Activity无法与用户进行交互。
    3. stopped->用户看不到当前界面,也无法与用户进行交互 完全被覆盖.
    4. killed->当前界面被销毁,等待这系统被回收
- Activity 间传递数据
    - Intent 传值
    - 静态变量
    - SP、ContentProvider
    - 广播
    - 外部存储File
    - SQLite
- Activity 状态的暂存与恢复
    - 一般会自动保存
    - 内存不足时,可以在onSaveInstanceState() 保存信息到 Bundle
- 横竖屏切换
    - 如果不设置 android:configChanges,则会根据生命周期重新构建
    - 设置的话则会调用 onConfigurationChanged()
- 启动模式
    - standard:每启动一个Activity就会在栈顶创建一个新的实例
    - singleTop:该模式会判断要启动的Activity实例是否位于栈顶,如果位于栈顶直接复用,否则创建新的实例
    - singleTask:使Activity在整个应用程序中只有一个实例。每次启动Activity时系统首先检查栈中是否存在当前Activity实例,如果存在则直接复用,并把当前Activity之上所有实例全部出栈
    - singleInstance:该模式的Activity会启动一个新的任务栈来管理Activity实例,并且该势力在整个系统中只有一个。无论从那个任务栈中启动该Activity,都会使该 Activity 所在的任务栈转移到前台,从而使Activity显示。主要作用是为了在不同程序中共享一个Activity

2. Service

服务

  1. startService
    • 用于启动一个服务执行后台任务,不与组件进行通信
    • 停止服务使用stopService。
    • 启动后便可以在后台无限的运行下去(除非系统杀死回收)
    • 生命周期:onCreate、onStartCommand、onDestroy
2. bindService:
    - 用于启动的服务需要进行通信。
    - 停止服务使用unbindService
    - 多个组件可以同时与服务绑定,但是当他们全部都解除绑定时,服务就会销毁。
    - 生命周期:onCreate、onBind、onUnbind、onDestroy

3. Broadcast Receive

广播是一种广泛运用的在应用程序之间传输信息的机制。而广播接收器是对发送出来的广播进行过滤接受并响应的一类组件

  1. 注册
    1. AndroidManifest.xml中注册;
    2. 在运行时的代码中使用Context.registerReceive()进行注册。
2. 类型
    - 普通广播:sendBroadcast,接收顺序随机,接收器不能处理,不能拦截
    - 系统广播:手机的基本操作(短信拍照等),有特定的 Intent-Filter和Action
    - 有序广播:根据级别确定接收顺序,同级别随机。优先级高的可以修改,可以拦截
    - 粘性广播
3. 耗时的操作放在服务中,否则容易被杀死

4. Content Provider

使一个应用程序的指定数据集提供给其他应用程序

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
四大组件是指Android应用开发中的四个核心组件,包括Activity、Service、BroadcastReceiver和ContentProvider。 Activity是Android应用中的页面承载组件,用于展示用户界面和处理用户交互。它是每个页面的承载,一个Activity就是一个页面。Fragment是依赖于Activity的,它的显示与Activity的生命周期密切相关。 Service是一种在后台运行的组件,用于执行长时间运行的任务或处理远程请求。它没有用户界面,可以在后台执行任务,即使用户切换到其他应用程序,服务也可以继续工作。 BroadcastReceiver是一种用于接收和响应广播消息的组件。它可以接收系统广播或自定义广播,然后根据接收到的广播消息执行相应的操作。 ContentProvider是一种用于管理应用程序中各个组件之间共享数据的组件。它提供了一种统一的接口,允许应用程序之间共享数据,包括访问和修改数据的能力。 在面试中,可能会问到Activity的四种启动模式,它们分别是: 1. Standard(标准模式):默认启动模式,每次启动都会创建一个新的实例。 2. SingleTop(单顶模式):如果Activity位于栈顶,则不会创建新的实例,而是重用栈顶的实例。 3. SingleTask(单任务模式):如果Activity在返回栈中已经存在,则将其上面的Activity全部出栈,使得该Activity成为栈顶,如果Activity不存在,则创建新的实例。 4. SingleInstance(单实例模式):该Activity独占一个返回栈,其他应用程序无法共享该实例,它会在一个新的任务中启动。 在返回栈中,Activity的顺序是栈底到栈顶,栈顶的Activity即为当前显示的Activity。根据启动模式的不同,返回栈中的Activity可能会发生变化。例如,使用SingleTask模式启动一个Activity时,如果该Activity在返回栈中已经存在,则会将其上面的所有Activity出栈,使得该Activity成为栈顶。 至于Fragment,它有11个生命周期方法,包括onAttach()、onCreate()、onCreateView()、onActivityCreated()、onStart()、onResume()、onPause()、onStop()、onDestroyView()、onDestroy()和onDetach()。这些方法可以用于管理Fragment的生命周期,如创建、销毁、显示和隐藏等操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Android面试题(四大组件篇)](https://blog.csdn.net/augfun/article/details/105237121)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

俺不理解

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

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

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

打赏作者

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

抵扣说明:

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

余额充值