2

アプリケーションにアダプターがあり、投稿を膨らませてListView. 各投稿には画像があるため、画像LruCacheを保存するために使用します。

アプリは問題なく動作しますが、2、3 回クラッシュし、何が問題なのかわかりませんでした。前回だけ、LogCat からこのログを取得できました。

E/AndroidRuntime(2407): 原因: java.lang.NullPointerException: key == null || 値 == null

クラッシュは、アプリが最近インストールされた場合にのみ発生します (デバイスからアプリを削除して再度インストールした場合)。初めてアプリを開いて上下にスクロールし始めると、クラッシュすることがあります。(常に発生するわけではありません。完全にランダムです!)

その後、もうクラッシュしません... :/

LruCache と空のキャッシュに関係があると思います。この質問を見ましたが、それは私の問題ではありませんでした。コードで null キャッシュを確認しました。

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

なにか提案を?

PS: 私の質問には十分な詳細がないことはわかっていますが、それが私が持っているすべての情報です!

4

2 に答える 2

4

LruCache.java の 164 行目によると、null キーまたは値を使用して呼び出そうとした場合にのみ、そのメッセージとともにaがLruCacheスローされます。NullPointerExceptionput

そのためput、キャッシュのどこで が呼び出されているかを調べ、そこに書き込まれているキーと値を確認して、そこから移動します。LruCache.javaまたは、のメソッドにブレーク ポイントを配置して、put何が起こるかを確認することもできます。

于 2015-09-29T07:08:10.410 に答える
1

ここでは、キャッシュを自分で管理していると思います。Picasso を使用することをお勧めしますこれにより、ネットワーク操作とキャッシュが自動的に管理されます。コードを 1 行だけ記述するだけで、ランダムなクラッシュは発生しなくなります。

ここにリンクがあります。http://square.github.io/picasso/

于 2015-09-29T07:07:59.380 に答える