• Android可以子线程更新UI?


    初了解Android的时候,就知道Android是不能在子线程更新UI的,不然程序会直接抛出异常,告诉你,别给我在自线程搞事情!

    但是,这个是针对普通的view做的限制,而TextureView,Surface则可以在自线程更新UI,你可以在它的内部创建线程,然后使用
    canvas在线程里进行绘制。

    TextureView与SurfaceView的不同之处在于,textureView使用surfaceholder,是从当前页面的view中获取的,而SurfaceView则是
    对当前View的置顶区域挖空,持有单独的surfaceHolder。在游戏开发或做视频播放功能时,由于界面需要保持刷新,所以他们都是基于
    surfaceView或TextureView进行的。

    Github上的一个项目,ScrollTextView,也是继承SurfaceView,在线程中不断的更改文字绘制的位置,实现的文字滚动。

    好处当然很明显,在单独的线程中处理逻辑,不会受其他线程,其他View的影响。
    坏处也有,页面切换的时候会闪;而且当两个页面都使用了该SurfaceView的时候,两个view对象对抢夺canvas的锁对象,造成应用ANR。

    所以surfaceView和TextureView不能滥用,一般的功能需求是用不到这两个view的。

  • 相关阅读:
    乘法相关
    hdu 1211 RSA (逆元)
    hdu 1811 Rank of Tetris (拓扑 & 并查集)
    hdu 2153 仙人球的残影
    hdu 1426 Sudoku Killer (dfs)
    hdu 2510 符号三角形 (DFS+打表)
    zoj 1002 Fire Net (二分匹配)
    hdu 1172 猜数字
    hdu 1728 逃离迷宫 (bfs)
    《Effective C++》笔记:III(转载)
  • 原文地址:https://www.cnblogs.com/liyilin-jack/p/10293509.html
Copyright © 2020-2023  润新知