"这篇资料是关于Android面试题的总结,涵盖了Intent的启动方式、Activity和Task的启动模式、通过Intent传递二进制数据的方法、Android应用的入口点、XML解析器、SQLite数据库的事务支持以及性能优化,以及Android Service、Binder和AIDL的相关知识。"
1. Intent的启动方式:
Intent提供了多种启动Activity的标志,例如FLAG_ACTIVITY_BROUGHT_TO_FRONT将已存在的Activity移至栈顶,FLAG_ACTIVITY_CLEAR_TOP清除栈顶到目标Activity之间的所有Activity,FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET在任务重置时清空任务,FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS不使Activity出现在最近应用列表,FLAG_ACTIVITY_MULTIPLE_TASK允许创建新的任务栈,而FLAG_ACTIVITY_NEW_TASK用于在新的任务栈中启动Activity。
2. Activity和Task的启动模式:
- standard:默认模式,每次启动都会创建一个新的实例。
- singleTop:如果目标Activity已经在栈顶,则不会创建新实例,而是回调onNewIntent()方法。
- singleTask:在一个任务栈中只有一个实例,启动时会清理该栈直到目标Activity。
- singleInstance:在一个单独的任务栈中只有一个实例,且栈内只能有该Activity。
3. 通过Intent传递二进制数据:
- Serializable:实现Serializable接口,将对象序列化后传递。
- Parcelable:更高效的数据传递方式,适用于频繁的数据交换,如Bitmap。
4. Android应用的入口点:
应用的真正入口点是应用程序类(Application)的main函数,即使没有定义Activity,也需要存在Application。
5. Android的XML解析器:
- XmlPullParser:基于事件驱动的解析方式,效率较高。
- SAX:简单API访问,也是基于事件驱动,逐行解析。
- DOM:文档对象模型,一次性加载整个XML结构,适合小型XML文件。
6. SQLite支持事务:
SQLite完全支持事务,通过BEGIN、COMMIT和ROLLBACK操作进行事务管理。优化性能可以使用预编译语句(PreparedStatement)、索引、批量操作等方式。
7. AndroidService和Binder、AIDL:
- AndroidService:提供后台运行的服务,可以执行长时间运行的操作而不阻塞用户界面。
- Binder:Android进程间通信(IPC)的基础,实现跨进程调用。
- AIDL(Android Interface Definition Language):用于定义服务接口,使得不同进程间能调用服务的方法,基于Binder机制。
以上知识点是Android开发者在面试中可能遇到的问题,熟悉并理解这些内容对提升开发能力和应对面试至关重要。对于Android开发者来说,深入理解和熟练应用这些技术是提升专业素养的关键。