我的应用程序中有一个适配器,它会使帖子膨胀并在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。:我知道我的问题没有足够的细节,但这就是我的所有信息!
答案 0 :(得分:3)
根据LruCache.java line 164,当LruCache
尝试使用空键或值调用NullPointerException
时,put
仅在一种情况下抛出put
个消息。
所以我会找出缓存中调用LruCache.java
的位置,看看那里写的是什么键和值,然后从那里开始。或者,您可以在put
的{{1}}方法中设置一个断点,看看会发生什么。
答案 1 :(得分:1)
我猜你自己正在管理缓存,我建议使用 Picasso 而不是使用任何,这将自动管理网络操作和缓存,你只需要编写单行代码和你的随机崩溃不会再发生了。