Android面试必备:四大组件、Service、BroadcastReceiver解析

4星 · 超过85%的资源 需积分: 8 3 下载量 172 浏览量 更新于2024-07-25 收藏 113KB DOC 举报
"这篇资料是关于Android技术面试的整理,涵盖了来自百度、新浪、中科软等知名公司的面试题,旨在帮助求职者准备Android开发相关的面试。资料中包含了多个经典问题及详细答案,覆盖了Android的基础知识、组件、性能优化、数据存储、服务管理、广播接收器、线程通信、异常处理、系统架构等多个方面。" 1. Android的四大组件是Activity(活动)、Service(服务)、BroadcastReceiver(广播接收器)和ContentProvider(内容提供者)。它们分别是用户交互界面、后台运行任务、全局消息分发和数据共享的主要方式。 2. Android常用的五种布局包括LinearLayout(线性布局)、RelativeLayout(相对布局)、FrameLayout(帧布局)、GridLayout(网格布局)和ConstraintLayout(约束布局),每种布局都有其特定的排列和对齐方式。 3. Android中的动画分为Tween动画(补间动画)和Property动画,Tween动画改变视图的位置、大小、透明度等属性,而Property动画则直接操作对象的属性,提供了更丰富的动态效果。 4. 解析XML的类有DOM、SAX和Pull Parser。官方推荐使用Pull Parser,因为它内存消耗低,适用于处理大型XML文档。DOM一次性加载整个文档,占用内存大;SAX事件驱动,只读取需要的部分,适合大数据量。 5. ListView的优化方案包括使用ViewHolder减少视图查找、复用convertView、异步加载数据、避免过多的嵌套布局和使用Adapter的notifyDataSetChanged()更新数据。 6. Android数据存储方式有内部存储(SQLite数据库、SharedPreferences、文件存储)、外部存储、ContentProvider和网络存储。根据数据类型和需求选择合适的方式。 7. Activity的启动模式有标准模式(默认)、单实例模式、单任务模式和单栈顶模式,分别对应不同的启动和回退行为。 8. 与Activity和Task相关的Intent启动方式有显式Intent和隐式Intent,显式指定目标组件,隐式通过Intent Filter匹配。 9. Activity的生命周期包括onCreate()、onStart()、onResume()、onPause()、onStop()、onDestroy(),其中onSaveInstanceState()用于保存状态,在屏幕旋转等配置更改时调用。 10. 屏幕旋转时,Activity通常会经历onSaveInstanceState()、onDestroy()、onCreate()、onStart()和onResume(),如果配置变化不销毁Activity,可以在AndroidManifest.xml中设置android:configChanges。 11. Service可以通过startService()启动,stopService()或stopSelf()停止。startService()启动的服务持续运行直到手动停止,bindService()启动的服务与客户端绑定,服务生命周期由绑定状态决定。 12. 注册广播有两种方式:静态注册(在AndroidManifest.xml中)和动态注册(在代码中)。静态注册不受应用运行状态影响,但增加APK大小;动态注册灵活,但应用关闭后不再接收广播。广播机制用于全局事件分发,如系统消息通知。 13. Message、Handler、Message Queue和Looper共同构成Android的消息处理机制,Message是消息对象,Handler处理消息,Message Queue是消息队列,Looper负责循环处理队列中的消息。 14. Activity、Intent、Intent Filter、Service、Broadcast、BroadcastReceiver是Android组件间通信的核心元素,Intent作为信息载体,Intent Filter定义接收范围,BroadcastReceiver响应广播事件,Service执行后台任务。 15. MVC模式将应用分为Model(数据模型)、View(视图)和Controller(控制器),Android官方推荐MVVM(Model-View-ViewModel)模式,分离业务逻辑和UI。 16. ANR(Application Not Responding)表示应用无响应,通常因主线程阻塞。避免方法包括避免长时间操作、使用AsyncTask或IntentService处理耗时任务。 17. ForceClose通常是由于未捕获的异常导致的,通过try-catch处理异常并记录日志可以避免。Android系统不会捕获所有异常,开发者需确保代码健壮性。 18. Android系统架构包括Linux内核、硬件抽象层、系统运行库、应用程序框架和应用程序。各层之间相互协作,提供完整的功能。 19. ContentProvider通过URI暴露数据,其他应用通过ContentResolver查询、插入、更新和删除数据,实现跨应用的数据共享。 20. Android API虽然没有声明异常,但在运行时仍可能抛出RuntimeException,如空指针异常等,可能导致应用崩溃。遇到异常应进行处理,避免程序中断。 21. IntentService是单线程服务,自动创建工作队列,顺序处理Intent,完成任务后自动停止,适合执行后台任务。 22. 使用onSaveInstanceState()和onRestoreInstanceState()保存和恢复Activity状态,当后台Activity被回收时,可以恢复之前的状态。 23. 设置Activity为窗口样式可通过修改主题主题,例如在AndroidManifest.xml中设置Theme.Dialog。 24. 退出Activity调用finish()方法,安全退出多Activity应用需考虑栈管理,使用startActivityForResult()或ActivityStackSupervisor。 25. AIDL(Android Interface Definition Language)是接口定义语言,用于进程间通信(IPC),处理基本数据类型和自定义对象。 26. Android程序运行时权限针对用户在安装时授权,文件系统权限针对系统级访问控制,前者与用户交互,后者更底层,影响文件操作。两者独立管理,但都需考虑安全性。 这份面试题集合全面地涵盖了Android开发的关键知识点,对于准备面试的开发者具有很高的参考价值。