Android技术面试关键点解析

版权申诉
0 下载量 117 浏览量 更新于2024-07-02 收藏 160KB DOC 举报
"Android技术面试整理" 1. Android的四大组件是Activity、Service、BroadcastReceiver和ContentProvider。Activity是用户界面的入口,负责交互;Service在后台执行长时间运行的任务,不提供用户界面;BroadcastReceiver用于接收系统或应用广播事件;ContentProvider则用来在应用间共享数据。 2. 常见的五种布局包括LinearLayout(线性布局)、RelativeLayout(相对布局)、FrameLayout(帧布局)、GridLayout(网格布局)和ConstraintLayout(约束布局)。LinearLayout按照垂直或水平方向排列子视图,RelativeLayout根据相对位置摆放,FrameLayout在中心放置一个子视图,GridLayout将视图组织成网格,ConstraintLayout允许灵活的布局约束,使布局更加精确。 3. Android中的动画分为Tween动画和帧动画。Tween动画改变对象属性,如平移、旋转等,而帧动画则通过显示一系列图片来创建连续的视觉效果。Tween动画适用于简单的过渡效果,帧动画适合播放动画序列。 4. 解析XML在Android中主要有两种方式:DOM解析和SAX解析。DOM解析一次性加载整个XML文档到内存,适合小型文件;SAX解析是事件驱动的,只读取需要的部分,适合处理大型文件。官方推荐SAX解析,因为它更节省内存。 5. ListView优化通常涉及使用ViewHolder模式减少视图查找,使用Adapter的convertView方法复用视图,以及异步加载数据等策略,以提高滚动流畅度和性能。 6. Android数据存储方式包括SharedPreferences(键值对存储)、内部存储(私有文件系统)、外部存储(公开文件系统)、SQLite数据库和ContentProvider。选择存储方式取决于数据的类型、大小和访问需求。 7. Activity启动模式有标准模式(SingleTop)、栈顶复用模式(SingleTask)、单实例模式(SingleInstance)和单活动栈模式(SingleActivity)。理解这些模式有助于合理设计应用的导航逻辑。 8. 与Activity和Task相关的Intent启动方式有显式Intent和隐式Intent。显式Intent指定目标组件,而隐式Intent根据Intent Filter匹配任何能响应的组件。 9. Activity的生命周期包括创建(onCreate())、初始化(onStart())、可见(onResume())、暂停(onPause())、停止(onStop())、销毁(onDestroy())等状态,开发者需要在这些回调中管理资源。 10. 屏幕旋转时,Activity默认会重新创建,可以通过在AndroidManifest.xml中设置Activity配置变化处理策略来改变这一行为。 11. Service的启动通过startService(),停止使用stopService()或stopSelf()。服务一旦启动就会持续运行,直到被明确停止。 12. 广播注册有两种方式:静态(在AndroidManifest.xml中声明)和动态(在代码中注册)。静态注册的广播在系统启动时就激活,而动态注册的广播在注册后激活。静态注册不受应用是否运行影响,但会增加内存占用。 13. Message、Handler、Message Queue和Looper共同构成了Android的消息传递机制。Looper循环处理Message Queue中的Message,由Handler发送和处理。 14. Activity、Intent、Intent Filter、Service、Broadcast和BroadcastReceiver是Android组件通信的核心元素。Intent作为消息载体,连接各个组件。 15. MVC模式(Model-View-Controller)分离了数据模型、视图和控制逻辑。在Android中,Activity往往扮演Controller角色,View显示UI,Model处理数据。 16. ANR(Application Not Responding)表示应用无响应,可通过优化主线程任务、避免阻塞UI线程等方式避免。 17. Force Close通常是由于未捕获的异常或资源泄露导致。可以通过良好的异常处理和资源管理避免。系统无法捕获导致Force Close的异常,但在代码中可以。 18. Android系统架构包括Linux内核、硬件抽象层、系统库和服务、应用框架和应用层。各层之间相互协作,为用户提供功能。 19. ContentProvider通过定义标准接口实现数据共享,其他应用通过URI查询、插入、更新或删除数据。 20. 即使API未声明异常,也可能在运行时抛出Runtime异常,例如空指针异常。遇到这类问题可能导致应用崩溃,应进行异常处理,如try-catch语句,或者使用编程最佳实践预防异常发生。 21. IntentService在单独的工作线程中处理Intent,完成任务后自动停止,适合执行一次性后台任务。 22. 保存Activity状态通常使用onSaveInstanceState()和onRestoreInstanceState(),在系统回收Activity前保存数据。恢复状态时,系统会调用onCreate(Bundle)或onRestoreInstanceState(Bundle)。 23. 设置Activity为窗口样式,可修改主题或者使用DialogFragment来实现。 24. 退出Activity使用finish(),安全退出多Activity应用,通常需要逆序回退栈,逐个关闭Activity,或者使用FLAG_ACTIVITY_CLEAR_TOP清除栈中所有Activity。 25. AIDL(Android Interface Definition Language)用于进程间通信(IPC)。它定义接口,让不同进程间能够调用对方的方法。AIDL支持基本数据类型和Parcelable对象。 26. Android程序运行时权限与文件系统权限不同。运行时权限在应用运行时请求,用户可以动态授予或拒绝;文件系统权限是针对文件和目录的,通常在安装时确定,影响文件操作。