NullPointerException:key == null || value == null

时间:2015-09-29 07:00:54

标签: java android nullpointerexception key android-lru-cache

我的应用程序中有一个适配器,它会使帖子膨胀并在ListView中显示它们。每个帖子都有一个图片,因此它使用LruCache来存储图片。

该应用程序运行良好,但它崩溃了两三次,我无法意识到问题是什么。只有最后一次,我才能从LogCat获取此日志:

  

E / AndroidRuntime(2407):引起:java.lang.NullPointerException:key   == null || value == null

只有在最近安装应用程序时才会发生崩溃(当我从设备中删除应用程序并再次安装时)!当我第一次打开应用程序并开始上下滚动时,它有时会崩溃。 (它不会一直发生,它是完全随机的!)

之后,它不会再崩溃......:/

我认为这与LruCache和空缓存有关。我看到 this question ,但这不是我的问题!我在代码中检查了空缓存:

if (MainActivity.thumbnailsCache.get(postID) != null)
        {
            imageViewThumbnail.setImageBitmap(MainActivity.thumbnailsCache.get(postID));
        } else {
            new DownloadAndSetImageTask(thumbnailURL).execute();
        }

有什么建议吗?

P.S。:我知道我的问题没有足够的细节,但这就是我的所有信息!

2 个答案:

答案 0 :(得分:3)

根据LruCache.java line 164,当LruCache尝试使用空键或值调用NullPointerException时,put仅在一种情况下抛出put个消息。

所以我会找出缓存中调用LruCache.java的位置,看看那里写的是什么键和值,然后从那里开始。或者,您可以在put的{​​{1}}方法中设置一个断点,看看会发生什么。

答案 1 :(得分:1)

我猜你自己正在管理缓存,我建议使用 Picasso 而不是使用任何,这将自动管理网络操作和缓存,你只需要编写单行代码和你的随机崩溃不会再发生了。

这是链接。 http://square.github.io/picasso/