TouchTarget需要创建的时候先看下池子里面有没有被回收上来的,如果没有可以利用的就给你创建一个新的,否则就从池子里面把头部的那个可以利用的给你,你把你的东西放进去就行了。回收的时候就是把你放在池子的头部,并清空你里面的东西,防止你重复的回收(一次就好)

  public static TouchTarget obtain(@NonNull View child, int pointerIdBits) {
if (child == null) {
throw new IllegalArgumentException("child must be non-null");
} final TouchTarget target;
synchronized (sRecycleLock) {
//链表的头部为空说明池子里面没有被回收上来的touchTagget对象,那么就直接创建,只要你需要就满足你
if (sRecycleBin == null) {
target = new TouchTarget();
} else {
//从池子里面去拿出来,做一个链表的减员操作
target = sRecycleBin;
sRecycleBin = target.next;
sRecycledCount--;
target.next = null;
}
}
//填充好你自己的东西就好了
target.child = child;
target.pointerIdBits = pointerIdBits;
return target;
} public void recycle() {
//回收一次后就会把child置空,再次回收就给你报错
if (child == null) {
throw new IllegalStateException("already recycled once");
} synchronized (sRecycleLock) {
if (sRecycledCount < MAX_RECYCLED) {
//池子放的下话就把你放在链表的头部,做一个链表的插入操作
next = sRecycleBin;
sRecycleBin = this;
sRecycledCount += 1;
} else {
//回收池已经满了,你自己被跟我们关联了,处于游离状态等待垃圾回收吧
next = null;
}
//把自己的东西置空
child = null;
}
}

ViewGroup的TouchTarget设计思维的更多相关文章

  1. 结构化CSS设计思维

    LESS.SASS等预处理器给CSS开发带来了语法的灵活和便利,其本身却没有给我们带来结构化设计思维.很少有人讨论CSS的架构设计,而很多框架本身,如Bootstrap确实有架构设计思维作为根基. 要 ...

  2. 什么是设计思维Design Thinking——风靡全球的创造力培养方法

    “把学习带到现实中,让孩子用自己的力量创造改变,可以直接提升他们的幸福感和竞争力.” 这是“全球孩童创意行动”的发起人——Kiran Sethi在TED演讲时说的一句话,这个行动旨在引导中小学生主动寻 ...

  3. 你真的了解字典(Dictionary)吗? C# Memory Cache 踩坑记录 .net 泛型 结构化CSS设计思维 WinForm POST上传与后台接收 高效实用的.NET开源项目 .net 笔试面试总结(3) .net 笔试面试总结(2) 依赖注入 C# RSA 加密 C#与Java AES 加密解密

    你真的了解字典(Dictionary)吗?   从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点.为了便于描述,我把上面 ...

  4. 笔记:Tid设计思维

    Tid设计思维 2017年7月19日TiD大会创新设计论坛 一.     设计思维实践: 为什么他能觉察你看不到的机会 1.    原因一:[觉察]与[看] 他(们)能“觉察”你“看”不到的机会,他们 ...

  5. 用例图浅谈以及OOA再到情景分析的面向对象电梯的设计(慕课东北大学)面向对象设计思维模式

    上班初期还不太适应,平时学习进度也跟不上,节奏慢下来会有时间更新的了. Diagram  这边以学生课程报名系统为例    这就是一种简单的用例图 用例图可以给读者提供的信息非常丰富,但是缺点是都是概 ...

  6. 数字逻辑实践4->面向硬件电路的设计思维--FPGA设计总述

    本文是对实验课上讲解的"面向硬件电路的设计思维"的总结,结合数字逻辑课本,进行提炼和整理. 主要来源是课件与本人整理,部分参考了网络大佬的博客. 本文主要介绍不同于之前软件设计思维 ...

  7. javascript设计思维

    //一.把参数当作私有变量使用 (function (a, b) { //把参数当作私有变量使用,省略了var,也节省了行数 console.log(b) //undefined,所有未赋值的变量均为 ...

  8. JWT权限设计思维导图

  9. Android事件分发机制二:viewGroup与view对事件的处理

    前言 很高兴遇见你~ 在上一篇文章 Android事件分发机制一:事件是如何到达activity的? 中,我们讨论了触摸信息从屏幕产生到发送给具体 的view处理的整体流程,这里先来简单回顾一下: 触 ...

  10. ASP.NET Aries 3.0发布(附带通用API设计及基本教程介绍)

    主要更新: 1:升级处理机制(js请求由同步变更为异步) 2:优化前端JS:包括API和配置方式. 3:增加InputDialog功能. 4:增远远程验证功能. 5:优化权限安全机制. 6:增加一次请 ...

随机推荐

  1. torch直接更改参数

    使用model.layer1.weight.data.copy_(w1) 其中model是自定义的参数名字,layer1是某个具体的层,使用某个具体的w1来修改

  2. 网易面经-hashmap是否能存null(debug源码)

    面试时一定要坚持自己的认知,不要让面试官两三下pua了. 结果是可以的 null作为key时被放在了tab下标为0的位置,只能有一个null null作为value时不受限制 虽然说value为nul ...

  3. C#基于数据库链接增删改查

    一.创建一个winfrom窗体 1.创建项目 2.创建一个链接数据的类 3.封装数据库的实体类(查询和增加) 在对数据操作时必须引用连个数据库using using System.Data; usin ...

  4. python 循环 类型转换

  5. JAVA 在开发中如何选择集合实现类

    先判断存储地类型(一组对象[单列]或者键值对[多列]) 一组对象:Collection接口 允许重复:list 增删多:LinkedList[底层维护了一个双向链表] 改查多;ArratList[底层 ...

  6. Q:Win10无法访问共享文件夹。提示此用户无法登录,因为该账户当前已被禁用

    问题:当我访问同事电脑共享文件夹时,弹出如下提示框: 可以在命令提示符上ping通对方主机,但是不能访问对方文件夹 尝试解决方法(无效): 1.同时按住win+r打开运行命令框,输入gpedit.ms ...

  7. LoadRunner压力测试(web)

    1.打开Virtual User Generator->新建脚本->选择创建新脚本类型,web-HTTP,HTML->创建 2.录制脚本 3.停止脚本录制 4.创建controlle ...

  8. Docker+jenkins 运行 python 自动化

    一.实现思路 在 Linux 服务器安装 docker 创建 jenkins 容器 根据自动化项目依赖包构建 python 镜像(构建自动化 python 环境) 运行新的 python 容器,执行 ...

  9. IDEA比较常用的快捷键

    IDEA比较常用的快捷键 快捷键 说明 Ctrl+] 诸如{}围起来的代码块,使用该快捷键可以快速跳转至代码块的结尾处 Ctrl+[ 同上,快速跳至代码块的开始出 Ctrl+Shift+Enter 将 ...

  10. 记一次FusionCompute安装springboot应用过程

    客户给了一个地址,登录后发现是FusionCompute 的一个虚拟机,第一次使用,于是过了一下在线帮助文档 ,大概明白了. 因为客户已经创建完了裸机虚拟机,前面的过程我也不会太多关注. 在概要里,可 ...