天天看点

android stdio使用监听器来实现按钮事件_Android面试基础(四)

android stdio使用监听器来实现按钮事件_Android面试基础(四)

十五. 请描述下广播BroadcastReceiver的理解

BroadcastReceiver是一种全局监听器,用来实现系统中不同组件之间的通信。有时候也会用来作为传输少量而且发送频率低的数据,但是如果数据的发送频率比较高或者数量比较大就不建议用广播接收者来接收了,因为这样的效率很不好,因为BroadcastReceiver接收数据的开销还是比较大的。

十六. 本地广播和全局广播有什么区别

1)LocalBroadcastReceiver仅在自己的应用内发送接收广播,也就是只有自己的应用能收到,数据更加安全。广播只在这个程序里,而且效率更高。只能动态注册,在发送和注册的时候采用LocalBroadcastManager的sendBroadcast方法和registerReceiver方法。

2)全局广播:发送的广播事件可被其他应用程序获取,也能响应其他应用程序发送的广播事件(可以通过 exported–是否监听其他应用程序发送的广播在清单文件中控制)全局广播既可以动态注册,也可以静态注册。

十七. Application和Activity的Context对象的区别

1)Application Context是伴随应用生命周期;不可以showDialog, startActivity, LayoutInflation等操作View

可以startServiceBindServicesendBroadcastregisterBroadcastloadResource values

2)Activity Context指生命周期只与当前Activity有关,而Activity Context这些操作都可以,即凡是跟UI相关的,都得用Activity做为Context来处理。

一个应用Context的数量 = Activity数量 + Service数量 + 1(Application数量)

十八.Android动画

因为

1.补间动画 只能够作用在视图

View

2.没有改变View的属性,只是改变了视觉效果

3.动画效果单一

所以属性动画(

Property Animation

)是在

Android 3.0

API 11

)后才提供的一种全新动画模式

1.作用对象进行了扩展:不只是View对象,甚至没对象也可以

2.动画效果:不只是4种基本变换,还有其他动画效果

3.作用领域:API11后引入的

在一定时间间隔内,通过不断对值进行改变,并不断将该值赋给对象的属性,从而实现该对象在该属性上的动画效果

十九.Android属性动画使用

两个使用方法类:ValueAnimator 类 & ObjectAnimator 类

两个辅助使用类:插值器 & 估值器

ValueAnimator类

通过不断控制值的变化,再不断

手动

赋给对象的属性,从而实现动画效果。

ObjectAnimator类

通过不断控制值的变化,再不断

自动

赋给对象的属性,从而实现动画效果。

ObjectAnimator与 ValueAnimator类的区别

ValueAnimator 类是先改变值,然后

手动赋值

给对象的属性从而实现动画;是

间接

对对象属性进行操作

ObjectAnimator 类是先改变值,然后

自动赋值

给对象的属性从而实现动画;是

直接

对对象属性进行操作

插值器 & 估值器

设置 属性值 从初始值过渡到结束值 的变化规律

实现非线性运动的动画效果

插值器

根据动画的进度(0%-100%)计算出当前属性值改变的百分比

估值器

根据插值器计算出当前属性值改变的百分比 & 初始值 & 结束值 来计算 当前属性具体的数值

二十. Android中数据存储方式

SharedPreferences(偏好设置),读取XML文件 SqlLite ContentProvide 网络 File

1Assets(只读)

2data/data/主包名/files目录下的

3SDCard读写文件

二一.谈谈对接口回调的理解

解耦

可以把使用实现了某一接口的类创建的对象的引用,赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。实际上,当接口变量调用被类实现的接口中的方法时,就是通知相应的对象调用接口的方法,这一过程称为对象功能的接口回调。

二二.介绍下SurfaceView

Surface意为表层、表面,顾名思义SurfaceView就是指一个在表层的View对象。为什么说是在表层呢,这是因为它有点特殊跟其他View不一样,其他View是绘制在“表层”的上面,而它就是充当“表层”本身。SDK的文档 说到:SurfaceView就是在窗口上挖一个洞,它就是显示在这个洞里,其他的View是显示在窗口上,所以View可以显式在 SurfaceView之上,你也可以添加一些层在SurfaceView之上。

刷新是独立的

二三.序列化的作用,以及Android两种序列化的区别

Serializable和Parcelable接口可以完成对象的序列化过程,当我们需要通过Intent和Binder传输数据时就需要使用者两种序列化方式。还有,我们需要对象持久化到存储设备或者通过网络传输给其他客户端

1.Serializable

接口是Java提供的一个序列化接口,它是一个空接口,为对象提供标准的序列化和反序列化操作。使用Serializable来实现的对象的序列化相当简单,只需要在类的生命中指定一个类似相面的标识即可自动实现默认的序列化过程

生成临时变量所以内存开销大 2.Parcelable接口

Parcelable接口是Android SDK提供的一种专门用于Android应用中对象的序列化和反序列化的方式,相比于Seriablizable具有更好的性能。实现Parcelable接口的对象就可以实现序列化并可以通过Intent和Binder传递。

实现比较麻烦 结论:内存数据传递使用Parcelable 存储数据使用Serializable