Android面试深度解析:核心知识点与源码分析
需积分: 9 51 浏览量
更新于2024-07-23
收藏 154KB DOC 举报
"这篇资料主要涉及的是Android面试中常见的问题,包括了Android基础知识、组件、性能优化、数据存储、服务管理、广播机制、线程通信、异常处理、系统架构、数据共享等内容,适合准备Android面试的开发者参考学习。"
1. Android的四大组件是:Activity(活动)、Service(服务)、BroadcastReceiver(广播接收者)、ContentProvider(内容提供者)。Activity是用户界面,用于交互;Service用于在后台执行任务;BroadcastReceiver用于接收系统或应用广播事件;ContentProvider负责数据的共享与访问。
2. 常见的五种布局有:LinearLayout(线性布局)、RelativeLayout(相对布局)、FrameLayout(帧布局)、TableLayout(表格布局)、GridLayout(网格布局)。它们各自有不同的排列和对齐方式,适应不同的UI设计需求。
3. Android中的动画分为两种:Tween Animation(补间动画)和Property Animation(属性动画)。补间动画改变对象在视图中的位置、大小等属性;属性动画则允许对对象的任何属性进行动画化,提供了更强大的动画效果。
4. 解析XML的类主要有SAXParser、DOMParser和PullParser。官方推荐使用PullParser,因为它更高效,内存占用少。SAX是事件驱动,DOM是一次性加载整个文档,PullParser则是按需读取。
5. ListView的优化方案包括使用ViewHolder模式减少 findViewById 的次数,复用convertView,预加载数据,以及使用异步加载等方法。
6. Android的数据存储方式有:Shared Preferences(键值对存储)、内部存储(私有文件系统)、外部存储(公共文件系统)、SQLite数据库、ContentProvider。
7. Activity的启动模式有:standard(标准模式)、singleTop(栈顶复用模式)、singleTask(单任务模式)、singleInstance(单实例模式),分别对应不同的启动和回退行为。
8. 与Activity和Task相关的Intent启动方式包括:隐式启动(基于Intent Filter)和显式启动(基于类名)。它们决定了Activity如何被其他组件调用和启动。
9. Activity的生命周期包括onCreate()、onStart()、onResume()、onPause()、onStop()、onDestroy()等方法,每个方法代表了Activity的不同状态。
10. 当屏幕旋转时,Activity通常会重建,生命周期表现为onSaveInstanceState()、onDestroy()、onCreate()、onStart()、onResume()。
11. Service可以通过startService()启动,通过stopService()或stopSelf()停止。startService()启动的服务会在完成任务后自动停止,而bindService()启动的服务与客户端绑定,解绑时才会停止。
12. 广播注册有两种方式:静态注册(在AndroidManifest.xml中)和动态注册(在代码中)。静态注册在应用启动时就生效,不受应用运行状态影响;动态注册需在运行时注册,但可以随时添加和移除。
13. Message、Handler、Message Queue、Looper的关系:Message是消息对象,存储待处理的信息;Handler是消息处理器,负责发送和处理消息;Message Queue是消息队列,存放Message;Looper是循环器,负责从队列中取出Message并分发给Handler。
14. Activity、Intent、Intent Filter、Service、Broadcast、BroadcastReceiver是Android组件间通信的关键元素。Intent用于启动组件,Intent Filter定义接收意图的条件,Broadcast和BroadcastReceiver用于广播事件的发送和接收。
15. MVC(Model-View-Controller)模式将应用分为模型、视图和控制器三个部分。在Android中,Activity可以视为Controller,View作为用户界面,Model则包含业务逻辑和数据。
16. ANR(Application Not Responding)表示应用无响应,通常是主线程阻塞导致。避免ANR的方法包括合理安排任务执行,避免长时间操作在主线程,使用AsyncTask或Service处理耗时任务。
17. ForceClose通常由未捕获的异常引起,可能导致应用崩溃。可以通过try-catch结构捕获异常,但在主线程中,某些错误无法捕获。
18. Android系统架构包括Linux内核、硬件抽象层(HAL)、库、运行时环境、应用程序框架和应用程序。这一层次结构使得Android具有高度可移植性和可扩展性。
19. ContentProvider通过URI暴露数据,其他应用通过ContentResolver查询、插入、更新或删除数据,实现数据共享。
20. 即使Android API没有声明抛出异常,运行时仍可能出现Runtime异常,例如空指针异常、数组越界等。遇到此类异常应进行异常处理,防止程序崩溃,通常使用try-catch来捕获并处理。
21. IntentService具有单线程处理Intent的特性,保证任务串行执行,避免并发问题,适用于执行后台任务。
22. 保存Activity状态通常使用onSaveInstanceState(Bundle outState)和onRestoreInstanceState(Bundle savedInstanceState)。当系统回收Activity时,可以保存重要数据。
23. 将Activity设置为窗口样式可通过修改主题或者使用Window的Flags实现,如设置FLAG_ACTIVITY_WINDOW_FORMAT_NO_TITLE去掉标题栏。
24. 退出Activity通常使用finish()方法,安全退出多Activity应用需要按照启动顺序反向关闭,避免内存泄漏。
25. AIDL(Android Interface Definition Language)是接口定义语言,用于跨进程通信。它自动生成服务端和客户端的代码,支持基本数据类型和Parcelable对象。
26. Android程序运行时权限与文件系统权限不同:运行时权限是在应用运行时请求,用户可决定是否授予;文件系统权限是针对文件和目录的,一般在安装时确定,影响文件的读写操作。
2012-08-15 上传
2011-04-19 上传
2017-03-20 上传
2023-06-22 上传
2023-05-31 上传
2023-04-02 上传
2023-10-20 上传
2023-02-15 上传
2023-04-28 上传
蜗牛骑兵
- 粉丝: 0
- 资源: 3