Android 面试题4
AIDL 的全称是什么?如何工作?能处理哪些类型的数据?
① Android Interface Definition Language
② AIDL 一般用于远程服务,也就是进程间通信。我们可以分服务端和客户端,服务端声明 AIDL 文件, 该文件命名为 xxx.aidl,ADT 会自动将 xxx.aidl 生成代码文件,代码文件提供了 aidl 中接口的实现。客户端如果要使用服务端提供的服务需要将xxx.aidl 文件放到客户端源代码目录下,然后生成 xxx.java 类, 客户端通过 bindService 的形参 ServiceConnection 的 onServiceConnected 获取到 Service 对象, 这个对象通过 Stub.asInterface(service)返回 aidl 的实现类。之后我们就可用调用这个 aidl 的实现类。
③ 基本数据类型都可以,复杂对象也可以,只不过需要实现 Parcelable 接口。
横竖屏切换时候 activity 的生命周期?
总结:
1、不设置 Activity 的 android:configChanges 时,切屏会重新调用各个生命周期, 切横屏时会执行一次,切竖屏时会执行两次
2、设置 Activity 的 android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次
3、设置 Activity 的 android:configChanges="orientation|keyboardHidden"时, 切屏不会重新调用各个生命周期,只会执行 onConfigur