传智播客武汉校区Android面试题精编
需积分: 10 59 浏览量
更新于2024-07-21
1
收藏 2.31MB PDF 举报
"Android面试题精编第一版,由传智播客武汉校区就业部出品,涵盖Android基础、Activity、Service等核心知识点,旨在帮助Android程序员准备面试。"
本文主要探讨了Android开发中的关键概念和面试常考问题,具体分为Android基础、Activity以及Service三大主题。以下是各部分的详细讲解:
一、Android基础(★★)
1. Activity是Android应用的基本组件,它代表用户可见的屏幕界面,用于与用户交互。
2. Activity的生命周期包括onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy()等方法,根据应用状态和用户操作,这些方法会被依次调用。
3. 不同类型的Activity如FragmentActivity、ListActivity和TabActivity在生命周期上的表现略有不同,但基本的生命周期过程是一致的,即创建、启动、运行、暂停、停止和销毁。
4. 为了保存Activity状态,通常使用onSaveInstanceState(Bundle outState)来保存关键数据,并在onCreate(Bundle savedInstanceState)或onRestoreInstanceState(Bundle savedInstanceState)中恢复。
5. 两个Activity之间跳转,会执行onPause()、onStop()(如果被覆盖的Activity返回栈中),onDestroy()(如果系统需要回收资源),然后新Activity执行onCreate()、onStart()和onResume()。
6. 横竖屏切换时,默认情况下Activity会被重建,执行onSaveInstanceState()、onDestroy()、onCreate()、onStart()和onResume()。
7. 通过setTheme()方法可以在AndroidManifest.xml或Activity的onCreate()中改变Activity的样式。
8. 结束Activity可调用finish()方法;安全退出多Activity应用,需在每个Activity的onBackPressed()或适当位置处理反向回退栈,避免内存泄漏。
二、Service(★★)
1. Service不在主线程执行,适合进行后台长时间运行的任务。但不推荐在Service中执行阻塞操作,可能导致ANR(Application Not Responding)。
2. 使用startService(Intent)启动Service,使用bindService(Intent, ServiceConnection, int)绑定Service。启动Service执行一次任务,绑定Service则可以建立连接进行交互。
3. Service生命周期包括onCreate()、onStartCommand(Intent, int, int)、onBind(Intent)、onUnbind(Intent)、onRebind(Intent)和onDestroy()。其中,onStartCommand()负责接收启动请求,onBind()处理绑定请求。
4. IntentService是一种特殊的Service,它在单独的工作线程中处理Intent,完成任务后自动停止,简化了Service的管理。
5. Activity、Intent和Service之间的关系:Intent作为消息载体,可以启动Service或传递数据给Service,Activity可以通过Intent与Service进行通信。
6. 默认情况下,Service与创建它的应用的主线程运行在同一个进程和线程中,但可以通过创建新的工作线程来分离执行。
以上内容涵盖了Android面试中关于Activity和Service的基础知识,是开发者必备的技能点,对于理解Android应用的运行机制和优化具有重要作用。
2024-01-25 上传
2022-08-03 上传
2018-04-14 上传
2020-12-24 上传
2024-11-09 上传
2024-11-09 上传
banana味儿的香蕉
- 粉丝: 0
- 资源: 1
最新资源
- NIST REFPROP问题反馈与解决方案存储库
- 掌握LeetCode习题的系统开源答案
- ctop:实现汉字按首字母拼音分类排序的PHP工具
- 微信小程序课程学习——投资融资类产品说明
- Matlab犯罪模拟器开发:探索《当蛮力失败》犯罪惩罚模型
- Java网上招聘系统实战项目源码及部署教程
- OneSky APIPHP5库:PHP5.1及以上版本的API集成
- 实时监控MySQL导入进度的bash脚本技巧
- 使用MATLAB开发交流电压脉冲生成控制系统
- ESP32安全OTA更新:原生API与WebSocket加密传输
- Sonic-Sharp: 基于《刺猬索尼克》的开源C#游戏引擎
- Java文章发布系统源码及部署教程
- CQUPT Python课程代码资源完整分享
- 易语言实现获取目录尺寸的Scripting.FileSystemObject对象方法
- Excel宾果卡生成器:自定义和打印多张卡片
- 使用HALCON实现图像二维码自动读取与解码