1.notify()与notifyAll()

notify()和notifyAll()一般用于唤醒被锁或等待中的adapter,两者都是object对象用于通知处在等待该对象的线程方法。notify唤醒一个正在等待该对象的线程,notifyAll唤醒所有正在等待该对象的线程。两者最大的区别是,notifyAll使所有原来在该对象上等待被notify的线程全部退出wait状态,变成等待该对象上的锁,一旦该对象解锁,它们就会去竞争。notify只是选择一个wait状态线程通知,并使它获得该线程的锁,不惊动其他同样在等待被该线程notify的线程,当第一个线程运行完毕后,释放该对象的锁,此时如果该对象没有再次使用notify,即便该对象已经空闲,其他wait状态等待的线程没有接收到该对象的通知,会继续处在wait状态,直到这个对象再次发出notify或者notifyAll。它们等待的是被notify或者notifyAll,不是等待锁。

2.notifyDataSetInvalid()与notifyDataSetChanged()

notifyDataSetChanged()和notifyDataSetInvalid()一般在adapter数据发生变化时调用。notifyDataSetChanged通过一个外部的方法强制控制,如果adapter的内容发生改变时,需要强制调用geiView()方法更新item中的内容,该方法在内部实现了每个在观察者上面调用的事件,每当发现数据集有变化的时候或读取到数据的新状态,就会调用此方法。notifyDataSetInvalid方法内部实现了每个观察者上调用onInvalidated事件,每当发现该数据集有改变时,比如该数据不在有效,就调用此方法。(注:notifyDataSetInvalid会重新绘制控件还原到初始状态,notifyDataSetChanged重新绘制当前可见区域。)

有问题欢迎私聊或者发送邮箱(964427082@qq.com)一起讨论

Adapter中notify(),notifyAll(),notifyDataSetChanged(),notifyDataSetInvalidaded()方法的区别相关推荐

  1. java e.getmessage() null,浅谈Java异常的Exception e中的egetMessage()和toString()方法的区别...

    Exception e中e的getMessage()和toString()方法的区别: 示例代码1: public class TestInfo { private static String str ...

  2. python predict_对Keras中predict()方法和predict_classes()方法的区别说明

    1 predict()方法 当使用predict()方法进行预测时,返回值是数值,表示样本属于每一个类别的概率,我们可以使用numpy.argmax()方法找到样本以最大概率所属的类别作为样本的预测标 ...

  3. java——Scanner中nextLine()方法和next()方法的区别

    遇到一个有意思的东西,在整理字符串这块知识的时候,发现我在用Scanner函数时,在字符串中加入空格,结果空格后面的东西没有输出来(/尴尬),不多说直接上代码: import java.util.Sc ...

  4. android add fragment,fragment中的add和replace方法的区别浅析

    使用 FragmentTransaction 的时候,它提供了这样两个方法,一个 add , 一个 replace ,对这两个方法的区别一直有点疑惑. 我觉得使用 add 的话,在按返回键应该是回退到 ...

  5. wait,notify,notifyAll作用、方法

    1.阻塞阶段 线程调用wait()方法进入阻塞阶段,前提是获得monitor锁才可以(object的wait(),notify(),notifyAll()都需要先获得锁,不然会抛出异常). 2.直到以 ...

  6. Cesium 中两种添加 model 方法的区别

    概述 Cesium 中包含两种添加 model 的方法,分别为: 通过 viewer.entities.add() 函数添加 通过 viewer.scene.primitives.add() 函数添加 ...

  7. jquery中prop()方法和attr()方法的区别浅析

    引用:http://www.jb51.net/article/41170.htm 官方例举的例子感觉和attr()差不多,也不知道有什么区别,既然有了prop()这个新方法,不可能没用吧,那什么时候该 ...

  8. ExtJS中listener方法和handler方法的区别

    listener方法和handler方法的区别在文档中的说明的太玄乎了,看不懂 listeners监听能够对一个click Event事件添加任意多个的事件响应处理函数 而handler处理只能够通过 ...

  9. Scanner中nextLine()方法和next()方法的区别

    我们在使用扫描器Scanner时,遇到了字符串肯定会使用API中定义好的next()和nextLine()方法.两者一个是能读取空格一个是不能读取空格就像下面的样子 当我们把二者交换位置,再来看一下效 ...

最新文章

  1. 用NiceTool在微信浏览器中下载APP
  2. 创建总账科目类型会计凭证
  3. Xamarin只言片语4——Xamarin.Android百度地图绑定
  4. Ethernet帧和802.3帧区别
  5. C语言源代码展示:常用转换函数实现原理
  6. Eclipse设置Courier New字体
  7. navicat连接mysql报错ssh_Navicat 连接SSH方式连接mysql报错 ssh:expected key exchange group packet...
  8. 初级 IT 管理者,如何打通任督二脉?
  9. IIS6.0 + openssl执行版 + Windows2003--配置篇
  10. Microsoft Azure地缘组是什么
  11. idea module重命名后去掉后面带着的原来的名字
  12. 计算机性能怎么测试软件,如何测试电脑性能|检测电脑性能的方法
  13. php元万亿单位转换,单位换算
  14. 物联网安全攻防的“线上幽灵”
  15. 数据同步项目总结1-数据实时同步的要点
  16. 干货|23种最好用的3D打印软件工具
  17. .net 和javaee
  18. pandas 读取excel文件
  19. zepto-selector.js简单分析
  20. php三层架构 注册登陆,什么是三层架构

热门文章

  1. 天线下倾角示意图_天线下倾角地计算方法
  2. 2021九江一中高考成绩查询系统,九江一中2018高考成绩
  3. 南宁二中三中高考2021成绩查询,2020年南宁二中三中录取总成绩不低于A
  4. java解析pom.xml_从pom.xml java获取变量
  5. 机器学习——卷积神经网络计算
  6. CUDA ---- Hello World From GPU
  7. C++设计模式之Strategy(策略模式)
  8. ZT: Delphi编程规范1.0.0.0 (yckxzjj )
  9. 嵌入式数据库与数据库服务器
  10. Python之logging模块