Android 面试题4

本文详细介绍了AIDL的工作原理,包括其在进程间通信中的角色,以及如何处理不同类型的数据。同时,讨论了Android Activity在横竖屏切换时的生命周期变化,并总结了不同配置更改时Activity的行为。此外,还提到了Android项目中实现的各种动画类型,如帧动画、补间动画和属性动画的应用。最后,文章探讨了Android应用的屏幕适配策略,包括使用权重布局、.9图以及百分比布局等方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值