一、android动画有哪几种?它的特点及区别是什么?

 

android动画有两种,分别为tween动画和frame动画。tween动画的实现方式可以使用视图组件移动,放大或缩小以及产生透明度的变化;frame动画

是传统的动画方式,通过顺序播放排列好的图片来实现,类似于播放电影。



二、请简述handler进制的原理

 

android提供了handler和looper来满足线程间的通信。handler先进先出原则,looper用来管理特定线程内对象之间的消息交换(message Exchange).

1.looper:一个线程可以产生一个looper对象,由它来管理此线程里的message queue(消息队列)

2.handler:可以构造一个handler对象来与looper沟通,以便push新消息到message queue里;或者接收looper(从message  queue里取出)所送来的消息

3.message queue:用来存放线程放入的消息

4.线程:UI  thread通常就是main thread, 而android启动程序时会为它建立一个message queue



三、android  view的刷新

 

Android中对view的更新有很多种方式,使用时要区分不同的应用场合,在使用的过程中应该分清多线程和双缓冲的使用情况。

1.不使用多线程和双缓冲:这种情况比较简单,一般只是希望在View发生改变时对UI进行重绘,你只需要在Activity中显式地调用View对象中的invalidate()方法

即可,系统会自动调用View的onDraw()方法

2.使用多线程和不使用双缓冲:这种情况需要开户新的线程,新开的线程就不好访问View对象了,强行访问的话会报错:android.view.ViewRoot$CalledFromWrongThreadException:Only the originalthread that created a view hierarchy can touch its views.

这时候你需要创建一个继承了android.os.Handler子类,并重写handleMessage(Message  msg)的方法。android.os.Handler是能发送和处理消息的,你

需要在Activity中发出更新UI的消息,然后再在Handler(可以使用匿名内部类)处理消息(因为匿名内部类可以访问父类变量,你可以直接调用View对象

中的invalidata()方法)。即在新线程创建并发送一个Message,然后在主线程中捕获、处理该消息。

3.使用多线程和双缓冲:Android中SurfaceView是View的子类,它同时也实现了双缓冲,你可以定义一个它的子类并实现SurfaceHolder.Callback接口。

由于实现SurfaceHolder.Callback接口,新线程就不需要android.os.Handler帮忙了。SurfaceHolder中lockCanvas()方法可以锁定画布,绘制完新的图

像后调用unlockCanvasAndPost(canvas)解锁(显示),还是比较方便得。



四、SIM卡的EF文件有何作用?

 

SIM卡的文件系统由自己规范,主要是为了和手机通讯,SIM本身可以有自己的操作系统,EF就是用来存储并且和手机通讯的。



五、什么是嵌入式实时操作系统,Android操作系统属于实时操作系统吗?

 

嵌入式实时损失指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果以能在规定的时间之内来

控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。主要用于工业控制、军事

设备、航空航天等领域对系统的时间有苛刻的要求,这就需要使用实时系统。实时系统可以分为软实时和硬实时两种,而

android是基于linux内核的,因此属于软实时。