キャッシュとして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メソッドを使用している場合しかし、私は、クラッシュレポートを取得しています:
私は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)
は、nullポインタ例外が発生することがあります。私は100%確信しています、キーと値はnullsではありません。
ご協力いただければ幸いです。
-F4
複数のスレッドで 'sBackgroundBitmapCache'を使用していますか?このようなサウンドは、スレッド同期の問題になる可能性があります。 – Mike