Android面试精粹:核心知识点与优化策略

需积分: 5 2 下载量 46 浏览量 更新于2024-07-19 收藏 689KB PDF 举报
"这是一份关于Android技术面试的整理资料,包含了高级面试中常见的问题,旨在帮助面试者准备Android开发的面试。" 1. Android的四大组件包括:Activity(活动)、Service(服务)、BroadcastReceiver(广播接收器)和ContentProvider(内容提供者)。Activity是用户界面的载体,Service用于在后台执行长时间操作,BroadcastReceiver用于接收系统或应用广播事件,ContentProvider则负责数据的共享和存储。 2. Android中常用的五种布局有:LinearLayout(线性布局)、RelativeLayout(相对布局)、FrameLayout(帧布局)、GridLayout(网格布局)和ConstraintLayout(约束布局)。它们各自有不同的排列和对齐规则,适用于不同场景的界面设计。 3. Android中的动画分为两种:Tween Animation(补间动画)和Property Animation(属性动画)。补间动画主要改变对象的位置、大小等属性,而属性动画可以修改对象的任意属性,并提供了更丰富的动画效果。 4. Android解析XML的类有DOM解析、SAX解析和PullParser解析。官方推荐使用PullParser,因为它内存占用低且效率较高。DOM解析一次性加载整个XML文档,SAX解析按事件流解析,PullParser则是拉式解析,按需读取。 5. ListView的优化方案包括使用ViewHolder模式减少视图查找时间,使用ListView的Adapter缓存convertView,避免过多的View复用,以及使用AsyncTask或者Loader异步加载数据。 6. Android的数据存储方式主要有:SharedPreferences(键值对存储)、文件存储(内部/外部)、SQLite数据库、ContentProvider和网络存储。 7. Activity的启动模式有四种:标准模式(standard)、单实例模式(singleInstance)、单任务模式(singleTask)和单栈顶模式(singleTop)。它们决定了Activity的创建和回退栈的行为。 8. 与Activity和Task相关的Intent启动方式有:显式Intent和隐式Intent。显式Intent明确指定目标组件,隐式Intent通过IntentFilter匹配目标组件。 9. Activity的生命周期包括:onCreate()、onStart()、onResume()、onPause()、onStop()、onDestroy()等方法,以及onRestart()在特定情况下调用。理解生命周期对于管理Activity的状态至关重要。 10. 屏幕旋转时,Activity通常会经历onSaveInstanceState()、onDestroy()、onCreate()、onStart()、onResume()的调用,若配置了对应的配置变更处理,可能不会重建。 11. 启动Service使用startService(),停止Service使用stopService()或stopSelf()。Service会在后台持续运行,直到手动停止或系统资源紧张时被自动停止。 12. 注册BroadcastReceiver有两种方式:静态注册(在AndroidManifest.xml中)和动态注册(在代码中)。静态注册不受应用运行状态影响,但可能导致内存泄漏;动态注册需要在使用时注册,内存管理更友好。 13. 单线程模型中,Message、Handler、MessageQueue和Looper共同构成消息传递机制。Looper在主线程中循环读取消息队列,Handler负责发送和处理消息,Message是传递的数据实体。 14. Activity是应用的交互入口,Intent用于启动组件并传递数据,IntentFilter定义Intent的匹配规则,Service处理后台任务,Broadcast和BroadcastReceiver实现全局事件监听。 15. MVC模式将应用分为Model(模型)、View(视图)和Controller(控制器)三部分。在Android中,Activity通常作为Controller,View对应UI组件,Model处理数据逻辑。 16. ANR(Application Not Responding)是指应用无响应,通常由于主线程阻塞导致。避免ANR的关键是确保主线程不执行耗时操作,可使用子线程、AsyncTask或IntentService处理。 17. ForceClose通常由于未捕获的异常导致,可通过try-catch捕获异常并处理,或者使用全局异常处理器。避免ForceClose的方法是正确处理异常和资源释放。 18. Android系统架构分为四层:Linux内核层、系统库和服务层、应用框架层和应用层。每一层都提供了不同的功能支持。 19. ContentProvider通过Uri机制对外提供数据访问接口,使得不同应用之间可以安全地共享数据。 20. Android API虽然没有声明抛出异常,但在运行时仍可能因编程错误抛出RuntimeException。遇到此类问题应检查代码逻辑,确保异常处理和资源释放。 21. IntentService优点在于它在完成任务后自动停止,避免了Service的资源占用。 22. 使用onSaveInstanceState()和onRestoreInstanceState()保存和恢复Activity状态,以应对被系统回收的情况。 23. 设置Activity为窗口样式可使用WindowManager添加Window,设置FLAG_ACTIVITY_WINDOW_FEATURE_NO_TITLE等标志。 24. 退出Activity通常使用finish(),安全退出多Activity应用,需要按照后向前的顺序依次finish()。避免内存泄漏,还需清理静态变量和资源。 25. AIDL(Android Interface Definition Language)用于跨进程通信,定义接口让不同进程间的Service可以交互。它能处理基本数据类型、Parcelable对象和Binder对象。 26. 运行时权限和文件系统权限不同,前者是Android 6.0+引入的,用户在使用时动态授予,后者是在安装时一次性授予。理解权限管理有助于合规开发。 27. 可以通过Intent设置特定浏览器打开页面,因为Intent的resolveActivity()方法会根据IntentFilter匹配最适合的应用。 28. Android的优势包括开源、设备多样性、强大的开发工具和丰富的API;不足可能包括版本碎片化、硬件兼容性问题和安全性挑战。 29. Android系统的优势还包括其灵活性和可定制性,不足则体现在系统升级慢、性能优化难度大和部分功能实现复杂。 这份面试整理涵盖了Android开发中的关键知识点,对于理解和掌握Android技术体系非常有帮助。