Android显示系统之View与SurfaceView更新屏幕的区别

2014-11-24 11:04:09 · 作者: · 浏览: 1

1、View






2、


Android更新屏幕主要有两种方式,继承SurfaceView实现SurfaceHolder.callback接口来实现屏幕的更新。


或者直接继承View类,复写OnDraw方法实现更新屏幕。


事实上,两种是用本质的区别的。


3、View与SurfaceView更新屏幕的区别



对于SurfaceView更新屏幕,是在非UI线程(主线程)中更新的。而对于View,则是在UI的主线程中更新画面。
那在UI的主线程中更新画面很容易造成主线程的堵塞,造成程序的长时间无响应,当主UI线程超过5秒钟没有响应用户的操作,Android系统会提示是否关闭应用程序。


当使用SurfaceView 来更新画面的话,就不必担心堵塞主UI线程这个问题了。但是这也带来了另外一个问题,线程的同步性。


所以当更新操作说花的时间较长,而且数据量较大的话,一般采用SurfaceView方式更新屏幕,而少用View。


4、Demo程序






打开下面的代码,测试堵塞主UI线程(长按屏幕5秒以上)就会出现如下的图。