1
我正在使用LinkedHashMap作为缓存。我已经重写removeEldestEntry以强制该缓存具有固定大小。旧值将被删除。这是我的地图如何初始化:在LinkedHashMap上使用put方法的NullpointerException
<!-- 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
你在多个线程中使用'sBackgroundBitmapCache'吗?这听起来像是一个线程同步问题。 – Mike