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"时, 切屏不会重新调用各个生命周期,只会执行 onConfigurationChanged 方法
总结一下整个 Activity 的生命周期
补充一点,当前 Activity 产生事件弹出 Toast 和 AlertDialog 的时候 Activity 的生命周期不会有改变
Activity 运行时按下 HOME 键(跟被完全覆盖是一样的):onSaveInstanceState
–>onPause --> onStop onRestart -->onStart—>onResume
Activity 未被完全覆盖只是失去焦点:onPause—>onResume
项目实现过哪些动画、怎么实现的?
1、套用以上问题的回答
2、帧动画、补间动画、属性动画都用过
3、例如下拉刷新时头布局里我们使用了帧动画
4、{发现}页面有个弹出窗口使用了补间动画,还加入了BounceInterpolator插值器的效果
5、{下载进度条}使用了属性动画
ViewPager指示器你们怎么做的(小细节|小亮点)?
1、用MagicIndicator这个(库或lib),里面包含了市面上绝大部分效果,实例化以后直接设置就OK了。
2、或者回答用NavigationTabStrip这个view做的,导包后,直接在布局里设置就好了,里面包含了市面上绝大部分效果。
屏幕适配怎么做?
1、不使用以像素点为单位的单位
2、多使用带权重的属性
3、多使用带权重属性的布局
4、图要多切
5、能用.9的用.9
6、在展示视图前px转dp
7、开发时参照固定屏幕密度,展示视图前获取当前手机的屏幕宽高,用当前的屏幕宽高除以固定的宽高,得出比例,给视图属性赋值
8、使用API提供的percent布局,但是除了控件宽高,还得用dp
9、使用某些封装过的percent布局,不能兼容ViewGroup类型的控件,比如list view,view pager等
10、终极方案,找到市面上所有的屏幕的分辨率,每一种都疯狂的创建values文件夹,写@dimen