0

我有一个光标适配器,我可能在网格设置中有许多图像。

当该bindView方法运行时,它需要非常快速地完成,因此作为性能/效率提升的一部分,我想在进行任何更改之前比较图像(所以我不会开始多次运行我的异步任务等)。但是,我无法存储整个byte[]内容(例如在 ViewHolder 中),因为这显然会占用内存。

但是,我想我可以获取图像字节数组的一部分(大约 20 个字符)并将其与 ViewHolder 中的当前内容进行比较,如果不同,则可以验证。

这是一个可行的选择还是有更好的方法来做到这一点?其次,哪一部分byte[]会产生最独特的角色集?

4

1 回答 1

1

1- 获取 MD5 校验和java.security.DigestInputStream(请参阅Getting a File's MD5 Checksum in Java

MessageDigest md = MessageDigest.getInstance("MD5");
InputStream is = new FileInputStream("file.txt");
try {
    is = new DigestInputStream(is, md);
    // read stream to EOF as normal...
}
finally {
  is.close();
}
byte[] digest = md.digest();

2-比较两个字节[]的小方法

boolean safeArrayEquals(byte[] a1, byte[] a2) {
    if (a1 == null || a2 == null) {
        return (a1 == a2);
    }

    if (a1.length != a2.length) {
        return false;
    }

    byte result = 0;
    for (int i = 0; i < a1.length; i++) {
        result |= a1[i] ^ a2[i];
    }

    return (result == 0);
}
于 2013-04-24T11:47:41.973 回答