2011年Android面试关键知识点解析

需积分: 9 0 下载量 23 浏览量 更新于2024-07-22 收藏 154KB DOC 举报
"这是一份2011年的Android技术面试整理资料,包含了来自百度、新浪、中科软等公司的笔试面试题目及详细答案。主要涵盖了Android的基础知识、四大组件、布局管理、动画、XML解析、ListView优化、数据存储、Activity管理、Service操作、广播注册、消息处理机制、Android架构等内容,旨在帮助求职者准备Android开发岗位的面试。" 以下是相关知识点的详细说明: 1. Android的四大组件包括:Activity(应用界面)、Service(后台服务)、Broadcast Receiver(广播接收器)、Content Provider(数据共享)。它们是构建Android应用程序的核心元素。 2. 常见的五种布局:LinearLayout(线性布局)、RelativeLayout(相对布局)、FrameLayout(帧布局)、GridLayout(网格布局)、ConstraintLayout(约束布局)。它们各自有不同的排列和对齐方式。 3. Android中的动画分为两种:Tween Animation(补间动画)和Frame Animation(帧动画)。Tween Animation用于对象属性的变化,而Frame Animation通过显示一系列静态图片来实现动画效果。 4. 解析XML的类主要有:DOM解析、SAX解析和Pull解析。官方推荐使用Pull解析,因为它更轻量级且内存效率更高。 5. ListView的优化方案通常包括:使用ViewHolder减少视图查找、使用ListView的分页加载、复用convertView、避免过多的ViewGroup以及使用AsyncTask加载数据。 6. Android的数据存储方式有:SharedPreferences(首选项存储)、SQLite数据库、文件存储、ContentProvider和网络存储。 7. Activity的启动模式有:standard(标准模式)、singleTop(栈顶复用模式)、singleTask(单任务模式)和singleInstance(单实例模式),它们决定了Activity在启动时的行为。 8. 与Activity和Task相关的Intent启动方式包括:显式Intent和隐式Intent,以及FLAG_ACTIVITY_NEW_TASK和FLAG_ACTIVITY_CLEAR_TASK等标志。 9. Activity的生命周期包括:onCreate()、onStart()、onResume()、onPause()、onStop()、onDestroy()等方法,每个方法对应着不同的用户交互状态。 10. 屏幕旋转时,Activity的默认行为是重新创建,可以通过在AndroidManifest.xml中设置`android:configChanges="orientation|screenSize"`来处理配置更改,避免重新创建。 11. 启动Service通常通过Context的startService()方法,停止Service则使用stopService()或stopSelf()。服务应该在不再需要时及时停止,以节省系统资源。 12. 注册广播有两种方式:静态注册(在AndroidManifest.xml中)和动态注册(在代码中)。静态注册无需担心生命周期,但可能会增加内存占用;动态注册在需要时注册,内存友好,但需要手动管理。 13. Message、Handler、Message Queue和Looper是Android的消息处理机制。Looper是消息循环,Message Queue是消息队列,Handler负责发送和处理消息,Message是传递的数据对象。 14. Activity、Intent、Intent Filter、Service、Broadcast、BroadcastReceiver是Android组件间通信的关键元素。Intent作为信息载体,Intent Filter定义接收广播的条件,BroadcastReceiver接收并响应广播,Service执行后台任务,Activity展示用户界面。 15. MVC(Model-View-Controller)模式分离了数据模型、用户界面和逻辑控制。在Android中,通常Activity扮演Controller角色,View是用户界面,Model则包含业务逻辑和数据。 16. ANR(Application Not Responding)表示应用无响应,通常发生在UI线程阻塞超过5秒时。避免ANR的方法包括:优化主线程操作、使用异步任务和Handler等。 17. 强制关闭(Force Close)通常是因为程序中的未捕获异常。避免Force Close需确保代码健壮性,处理潜在异常,使用try-catch块,并适当使用Log记录错误信息。 18. Android系统架构由Linux内核、硬件抽象层、运行库层、应用框架层和应用程序层组成,形成了从底层硬件到上层应用的完整生态。 19. ContentProvider允许不同应用之间共享数据,通过Uri访问和操作数据。 20. Android API虽然不直接声明抛出异常,但在运行时仍可能遇到Runtime异常,例如空指针异常。遇到此类问题应进行异常处理,通过try-catch捕获并处理异常。 21. IntentService具有自动管理线程和一次性任务的特点,完成任务后自动停止服务,适合执行后台耗时操作。 22. 为防止Activity被系统回收,可以使用onSaveInstanceState()保存状态,onRestoreInstanceState()恢复。对于多Activity应用,使用finish()逐个关闭Activity,或使用Task栈管理来安全退出。 23. 将Activity设置为窗口样式通常涉及改变主题(Theme)和窗口特性,如全屏、无标题栏等,这在AndroidManifest.xml中配置。 24. 退出Activity使用finish(),安全退出多Activity应用可使用FLAG_ACTIVITY_CLEAR_TOP或FLAG_ACTIVITY_SINGLE_TOP清理栈历史。 25. AIDL(Android Interface Definition Language)是Android的接口定义语言,用于跨进程通信。它自动生成Binder代理类,支持基本数据类型和自定义数据类型的传输。 26. Android程序运行时权限与文件系统权限不同,前者是用户在安装应用时或运行时给予的,后者是针对文件和目录的读写权限。运行时权限管理从Android 6.0(API级别23)开始引入,更注重用户隐私。