android(base)面试题

本文详细介绍了Android中Activity的生命周期,包括启动、运行、暂停、停止、重启、销毁等各个阶段的方法调用顺序。对于理解Activity如何响应用户的交互及系统事件非常重要。

activity的生命周期?

正常启动一个activity
1:
ActivityLaunched(1:onCreate() 2:onStart() 3:onResume())
2:
ActivityRunning

当activity被另外的一个activity覆盖的时候
(1:onPause() )
当覆盖的activity离开,被覆盖的activity再次显示
(1:onResume())
然后ActivityRuning

Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:(1:onPause() 2:onStop())

用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。
(1:onRestart() 2:onStart() 3:onResume())

Activity处于被覆盖状态或者后台不可见状态,系统内存不足,杀死当前Activity
(1:onDestory() )
而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。
(1:onCreate() 2:onStart() 3:onResume() )

用户退出当前activity()
(1:onPause() 2:onStop() 3:onDestory() )

<think>好的,用户想要获取2023年Android相关的面试题及答案汇总。首先,我需要确认用户的具体需求。他们可能正在准备面试,需要最新的资料来复习。接下来,我要考虑2023年Android领域有哪些新的技术和趋势,比如Jetpack Compose的普及、Kotlin的进一步应用、性能优化的新方法等。 然后,我应该整理常见的面试题分类,确保覆盖各个重要方面。比如Java和Kotlin基础、Android组件、性能优化、架构设计、第三方库、系统源码等。同时,用户提到的参考引用中有提到多线程、IPC等内容,这些也需要包含进去。 接下来,需要确保每个分类下有最新的问题,例如在Jetpack Compose方面,可能会有关于状态管理、组合函数的问题。在性能优化部分,可能需要包括启动优化、内存泄漏检测工具的最新进展等。 还要注意答案的准确性和深度,例如解释协程时,要提到Dispatchers和挂起函数。在架构模式中,比较MVVM和MVI的区别。同时,结合源码分析,比如LiveData的工作原理,这样能体现深入的理解。 另外,用户示例中的回答结构清晰,使用了代码块和引用标识,我需要遵循相同的格式。确保每个问题都有对应的答案,并且答案简洁明了,重点突出。可能还需要添加相关问题,帮助用户进一步扩展知识。 最后,检查引用部分,虽然用户提供的引用可能不是最新的,但要确保引用的内容与2023年的趋势相符,可能需要参考最新的官方文档或技术博客,但这里由于引用固定,需按用户提供的引用处理。同时,提醒用户参考答案并关注官方动态,保持信息的准确性。</think># 2023年Android面试题及答案精选 ## 一、基础核心篇 ### 1. Kotlin协程原理 协程通过`Continuation`实现挂起/恢复机制,底层依赖状态机管理代码执行流程。关键组件包括: - `CoroutineScope`:协程作用域 - `Dispatchers`:线程调度器(IO/Main/Default) - `suspend`函数:挂起函数不阻塞线程 ```kotlin viewModelScope.launch(Dispatchers.IO) { val data = repository.fetchData() // 挂起点 withContext(Dispatchers.Main) { updateUI(data) } } ``` ### 2. Jetpack Compose状态管理 采用单向数据流架构,核心概念: - `remember`:组件内状态保持 - `mutableStateOf`:创建可观察状态 - `ViewModel`:业务逻辑状态管理[^1] ## 二、性能优化篇 ### 1. 启动速度优化方案 - 阶段划分:`冷启动(>800ms) >温启动>热启动` - 优化工具:`Android Studio Profiler` + `Macrobenchmark` - 实践方案: ```gradle android { buildTypes { debug { // 禁用调试功能 isDebuggable false isMinifyEnabled true } } } ``` ### 2. 内存泄漏检测 - `LeakCanary 2.9`:自动化内存检测 - `Android Profile Memory Heap`:手动堆转储分析 - 常见场景:`非静态Handler`、`匿名内部类持有Activity引用` ## 三、架构设计篇 ### 1. MVVM与MVI对比 | 架构 | 数据流 | 状态管理 | 适用场景 | |------|--------|----------|----------| | MVVM | 双向绑定 | 多状态管理 | 常规业务 | | MVI | 单向流 | 单一状态树 | 复杂交互 | ### 2. 模块化通信方案 - 接口下沉:定义`base`模块接口 - `ARouter`:阿里路由框架 - `Hilt`依赖注入:组件解耦 ## 四、Framework篇 ### 1. Binder机制原理 采用内存映射技术,核心类: - `IBinder`:跨进程通信接口 - `AIDL`:自动生成代理类 - `ServiceManager`:系统服务管理中心[^2] ### 2. View渲染流程 $$ \begin{aligned} &1. \text{Measure} \rightarrow \text{onMeasure()} \\ &2. \text{Layout} \rightarrow \text{onLayout()} \\ &3. \text{Draw} \rightarrow \text{onDraw()} \end{aligned} $$ ## 五、新技术专题 ### 1. Kotlin Multiplatform - 共享业务逻辑层代码 - 支持iOS/Web/Desktop - 2023年稳定版发布 ### 2. Android 14新特性 - 后台限制增强 - 语法性别支持 - 隐私沙盒扩展
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值