当前位置: 首页 > article >正文

深入Android架构(从线程到AIDL)_17 SurfaceView的UI多线程01

1、 View与SurfaceView 之区别

  • SurfaceView是View的子类,其内嵌了一个用来绘制的Surface。
  • 当SurfaceView成为可见时,就会诞生Surface;反之当SurfaceView被隐藏时,就会删除Surface,以便节省资源。
  • 程序里可以控制Surface的大小,SurfaceView可控制Surface的绘图位置。
  • View组件是由UI 线程(主线程所执行)。如果需要去迅速更新UI画面或者UI画图需要较长时间(避免阻塞主线程),就使用SurfaceView。
  • 它可以由背景线程(background thead)来执行,而View只能由UI(主)线程执行。这SurfaceView内含高效率的rendering机制,能让背景线程快速更新surface的内容,适合演示动画(animation)。
  • 在程序里,可以通过SurfaceHolder接口来处理Surface,只要调用getHolder()函数就可以取得此接口。
  • 当SurfaceView成为可见时,就会诞生Surface;反之当SurfaceView被隐藏时,就会删除Surface,以便节省资源。当Surface诞生和删除时,框架互调用SurfaceCreated()和 SurfaceDestroyed()函数。

           


http://www.kler.cn/a/473412.html

相关文章:

  • 协方差矩阵
  • 个人博客搭建(二)—Typora+PicGo+OSS
  • 如何用 ESP32-CAM 做一个实时视频流服务器
  • 嵌入式系统 (2.嵌入式硬件系统基础)
  • 单片机实现模式转换
  • 内网基础-防火墙-隧道技术
  • 数据库中的并发控制
  • 如何将某两个提交去掉父提交的合并
  • YOLOv10改进,YOLOv10改进主干网络为StarNet,CVPR2024,助力模型涨点
  • undolog,redolog,binlog分别是做什么的?
  • VSCODE使用Echarts组件库(不是vue)
  • LeetCode100之组合总和(39)--Java
  • 【已解决】如何让容器内的应用程序使用代理?
  • 怎么分析网页游戏中的数据 官方API 数据挖掘 第三方工具Overwolf、LoLalytics
  • Echarts的认识和基本用法
  • 【Rust自学】11.3. 自定义错误信息
  • 网络安全图谱以及溯源算法
  • Go中的context 包使用详解
  • 图像处理|膨胀操作
  • Windows系统安装Docker Desktop
  • 【踩坑】SparkSQL union/unionAll 函数的去重问题
  • JavaScript动态渲染页面爬取之Selenium
  • Elasticsearch:在 HNSW 中提前终止以实现更快的近似 KNN 搜索
  • 实习总结(经历篇)
  • 聚类系列 (二)——HDBSCAN算法详解
  • GO:sync.Map