美文网首页
自线程绘制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