【问题标题】:NullPointerException: key == null || value == nullNullPointerException: key == null ||值 == 空
【发布时间】:2015-09-29 07:00:54
【问题描述】:

我的应用程序中有一个适配器,它可以扩展帖子并将它们显示在 ListView 中。每个帖子都有一张图片,所以它使用LruCache来存储图片。

该应用程序运行良好,但它崩溃了两三次,我无法意识到问题出在哪里。只有上次,我可以从 LogCat 获取此日志:

E/AndroidRuntime(2407): 由: java.lang.NullPointerException: key == 空 ||值 == 空

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

之后,它就不会再崩溃了……:/

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

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

有什么建议吗?

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

【问题讨论】:

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    这里我猜你是自己管理缓存,我建议使用Picasso而不是使用any,这将自动管理网络操作和缓存,你只需要编写一行代码和您的随机崩溃将不再发生。

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

    【讨论】:

      猜你喜欢
      • 2014-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-10
      • 2013-08-07
      • 1970-01-01
      • 2016-05-23
      • 2013-07-30
      相关资源
      最近更新 更多