详尽的Android面试指南:四大组件、布局优化与数据存储

需积分: 3 1 下载量 169 浏览量 更新于2024-07-28 收藏 125KB DOC 举报
"这是一份全面的Android面试题集,包含详细答案,涵盖了从基础到高级的各种Android开发知识点。" 1. Android的四大组件是Activity、Service、BroadcastReceiver和ContentProvider,它们各自扮演着不同的角色。Activity是用户界面的入口,负责与用户交互;Service在后台运行,执行长时间任务;BroadcastReceiver接收并处理系统或应用广播事件;ContentProvider用于数据共享,允许不同应用之间访问数据。 2. 常见的五种布局包括LinearLayout(线性布局)、FrameLayout(帧布局)、RelativeLayout(相对布局)、TableLayout(表格布局)以及GridLayout(网格布局)。它们各有特点,如LinearLayout按照垂直或水平方向排列子视图,FrameLayout允许子视图覆盖,RelativeLayout根据相对位置确定子视图的位置,TableLayout基于表格结构展示内容,GridLayout则将视图分隔成网格布局。 3. Android中的动画分为两种:补间动画(Tween Animation)和帧动画(Frame Animation)。补间动画改变对象属性,如平移、缩放、旋转和透明度,通过插值器实现平滑过渡;帧动画则是播放一系列静态图像,类似电影胶片效果。 4. 解析XML在Android中主要有两种方法:DOM(Document Object Model)和SAX(Simple API for XML)。DOM一次性加载整个XML文档,适合小文件;SAX是一种事件驱动的解析器,逐行读取,内存占用低,适合大文件。官方推荐SAX,因为它更高效,但DOM易于操作和理解。 5. 优化ListView的关键在于复用convertView,通过Adapter的getView()方法重用已创建的视图,减少内存分配和提高滚动性能。 6. Android提供了多种数据存储方式,如Shared Preferences(键值对存储)、内部存储(私有文件)、外部存储(公共文件)、SQLite数据库和ContentProvider(用于跨应用数据共享)。 7. Activity的启动模式有标准模式(standard)、单实例模式(singleTop)、单任务模式(singleTask)和单栈顶模式(singleInstance)。它们影响了Activity在任务栈中的行为和生命周期。 8. 与Activity和Task相关的Intent启动方式有普通启动(隐式或显式)、带FLAG_ACTIVITY_NEW_TASK启动和FLAG_ACTIVITY_CLEAR_TOP启动。前者创建新的Activity,后两者涉及Task管理,如新建Task或清除栈顶Activity。 9. Activity的生命周期包括onCreate()、onStart()、onResume()、onPause()、onStop()、onRestart()和onDestroy()。这些方法在Activity状态变化时被调用,开发者可以根据需求在这些回调中进行相应操作。 10. 屏幕旋转时,默认情况下Activity会重新创建,生命周期从onCreate()开始,可以通过配置AndroidManifest.xml中的`configChanges`来控制Activity是否重新创建。 11. 启动Service通常使用startService(),而stopService()或stopSelf()用于停止。bindService()可以建立客户端和服务端的连接,unBindService()断开连接。startService()适合执行后台任务,bindService()用于需要长时间交互的服务。 12. 广播注册有两种方式:静态注册(AndroidManifest.xml中)和动态注册(代码中)。静态注册无需程序运行就能接收到广播,但会增加Apk体积;动态注册更加灵活,但需在程序运行时进行。 13. 在单线程模型中,Message、Handler、Message Queue和Looper协同工作,形成消息循环。Message携带数据,Handler负责发送和处理消息,Message Queue作为消息队列存储待处理的消息,Looper不断轮询队列并分发消息。 14. Activity、Intent、Intent Filter、Service、Broadcast和BroadcastReceiver是Android组件间通信的核心元素。Activity是用户界面,Intent是通信桥梁,Intent Filter用于过滤广播,Service处理后台任务,Broadcast是全局广播事件,BroadcastReceiver接收并响应广播。 15. MVC(Model-View-Controller)模式分离了数据(Model)、用户界面(View)和逻辑控制(Controller)。在Android中,Model通常表示数据和业务逻辑,View负责显示,Controller处理用户输入和数据更新。 16. ANR(Application Not Responding)指的是应用无响应,通常由于主线程阻塞导致。避免ANR的方法包括避免主线程做耗时操作、使用AsyncTask或其他异步处理机制。 17. ForceClose通常是由于未捕获的异常导致应用崩溃。避免ForceClose的关键是正确处理异常,确保所有可能抛出异常的地方都有try-catch语句,并提供合适的错误反馈。 18. Android系统架构由Linux内核层、系统库层、应用框架层和应用层组成。从底层到上层,分别负责硬件抽象、服务提供、API接口和用户应用。 19. ContentProvider通过实现ContentProvider类和UriMatcher,对外暴露数据操作接口,使得其他应用可以通过标准的ContentResolver访问和修改数据。 20. 即使Android API没有声明抛出异常,但在运行时仍可能抛出RuntimeException,如空指针异常(NullPointerException)和类型转换异常(ClassCastException)。编写代码时应进行适当的异常处理,提高程序的健壮性。