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