美文网首页
自线程绘制UI & equals和hashcode方法

自线程绘制UI & equals和hashcode方法

作者: 拿拿guardian | 来源:发表于2020-03-13 22:22 被阅读0次

1.为什么不能在子线程做UI绘制

简单的说,ViewRootImpl对象生成之后,就不能在子线程操作UI,某些可以绕过checkThread方法(skipInvalidate方法判定为true)的特例除外,在ViewRootImpl对象生成之前,比如在onCreate方法里,还是在子线程可以操作UI的。

https://juejin.im/post/5d4176365188255d8919be91

https://www.jianshu.com/p/4f158c81e22e

2.equals和hashcode方法(为什么重写equals方法一定要重写hashcode方法)

https://blog.csdn.net/qq_37856300/article/details/88813842

https://blog.csdn.net/qing_gee/article/details/104569177

可能有读者会问:“一定要同时重写 equals() 和 hashCode() 吗?”

回答当然是否定的。如果对象作为键在哈希表中,那么两个方法都要重写,因为 put 和 get 的时候需要用到哈希码和 equals() 方法;

如果对象不在哈希表中,仅用来判断是否相等,那么重写 equals() 就行了。

在 Java API 文档中关于 hashCode 方法有以下几点规定(原文来自 java 深入解析一书):

1、在 java 应用程序执行期间,如果在 equals 方法比较中所用的信息没有被修改,那么在同一个对象上多次调用 hashCode 方法时必须一致地返回相同的整数。

2、如果两个对象通过调用 equals 方法是相等的,那么这两个对象调用 hashCode方法必须返回相同的整数。

3、如果两个对象通过调用 equals 方法是不相等的,不要求这两个对象调用hashCode 方法必须返回不同的整数。但是程序员应该意识到对不同的对象产生不同的 hash 值可以提高哈希表的性能。

相关文章

网友评论

      本文标题:自线程绘制UI & equals和hashcode方法

      本文链接:https://www.haomeiwen.com/subject/boqushtx.html