zoukankan      html  css  js  c++  java
  • SurfaceView和普通View的区别、以及TextureView

    SurfaceView和普通View的区别、以及TextureView

    SurfaceView和普通View的区别

    首先,SurfaceView是在一个新开的子线程中可以重新绘制画面,而view必须在UI的主线程中更新画面。

    出现 SurfaceView 的原因在于:虽然说通常情况下 View 已经可以满足大部分的绘图需求,但还是有缺陷,View 是通过刷新来重绘视图的,Android 系统通过发出 VSYNC 信号来进行屏幕的重绘,刷新的时间间隔是16ms,果在 16ms 内刷新完成的话是没有什么影响的,但是如果刷新的时候执行的操作逻辑太多,那么会出现卡顿的现象,将无法响应按键、触屏等消息。SurfaceView 就是解决这个问题的,使用SurfaceView由于是在子线程中更新画面所以不会阻塞UI主线程,但这也带来了另一个问题,就是事件同步,比如触屏了一下,需要在SurfaceView中的thread处理,一般就需要有一个event queue的设计来保存touchevent,这会稍稍复杂一点,因为涉及到线程安全。

    View 主要用于主动更新的情况下,而 SurfaceView 主要用于被动更新,例如频繁的刷新;
    View 在主线程中对画面进行更新,而 SurfaceView 通常会通过一个子线程来进行更新;
    View 在绘图的时候是没有使用双缓冲机制的,而 SurfaceView 在底层实现中使用了双缓冲机制;

    参考

    Android自定义View之双缓冲机制和SurfaceView

    Android视图SurfaceView的实现原理分析

    SurfaceView和TextureView的区别

    视频画面帧的展示控件SurfaceView及TextureView对比

  • 相关阅读:
    在浏览器应用中使用 gRPC
    gRPC 客户端工厂集成
    gRPCurl 测试 gRPC 服务
    links
    Flex布局
    使用 IHttpClientFactory 实现复原 HTTP 请求
    Dex Common
    Dex MVVM
    日志
    配置
  • 原文地址:https://www.cnblogs.com/chen-ying/p/12759036.html
Copyright © 2011-2022 走看看