android - NullpointerException 在 LinkedHashMap 上使用 put 方法

标签 android hashmap nullpointerexception put linkedhashmap

我正在使用 LinkedHashMap 作为缓存。我已经覆盖 removeEldestEntry 以强制此缓存具有固定大小。旧值将被删除。这是我的 map 的初始化方式:

<!-- language: lang-java -->
    sBackgroundBitmapCache = new LinkedHashMap<String, Bitmap>(backgroundCacheSize) {
        private static final long serialVersionUID = 287204858147490218L;

        @Override
        protected boolean removeEldestEntry(LinkedHashMap.Entry<String, Bitmap> eldest) {
            if (size() > backgroundCacheSize) {
                Log.d(TAG, "Removing hash " + eldest.getKey() + " from background cache");
                return true;
            } else {
                return false;
            }
        }
    };

很明显,我将使用 put 方法使用该缓存。但是在使用 put 方法时我收到了崩溃报告:

java.lang.NullPointerException
at java.util.LinkedHashMap.postRemove(LinkedHashMap.java:291)
at java.util.HashMap.remove(HashMap.java:637)
at java.util.LinkedHashMap.addNewEntry(LinkedHashMap.java:186)
at java.util.HashMap.put(HashMap.java:411)

我一直没能找到为什么,使用 put 方法,可能会导致空指针异常。我 100% 确定,键和值不为空。

我们将不胜感激。

-f4

最佳答案

正如 Mike 所说,问题可能与尝试从多个线程使用缓存有关。我遇到了同样的问题,似乎已通过确保所有 put() 发生在 UI 线程中来解决它。

关于android - NullpointerException 在 LinkedHashMap 上使用 put 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6389062/

相关文章:

android - 将 Xcode 键绑定(bind)导入 IntelliJ IDEA

java - Hashmap null 转换为 int

C++ STL unordered_map问题与疑惑

java - 如果字符串与键条目匹配,如何返回键及其值

android - 改造滚动发光在填充之外

java - Android 中抛出异常的序列化

java - Android getParentFragment() 在 fragment 内的 ViewPager 中返回 null

android - 空指针异常 - onPrepareDialog

Java 尝试调试 NullPointerException

android - 删除/隐藏 card.io/paypal Logo android