エラーレポート見たらNetworkImageViewでぬるぽ(NullPointerException)がthrowされてる。
java.lang.NullPointerException
at com.android.volley.Request.(ProGuard:129)
at com.android.volley.toolbox.ImageRequest.(ProGuard:71)
at com.android.volley.toolbox.ImageLoader.get(ProGuard:220)
at com.android.volley.toolbox.ImageLoader.get(ProGuard:171)
at com.android.volley.toolbox.NetworkImageView.loadImageIfNecessary(ProGuard:150)
at com.android.volley.toolbox.NetworkImageView.onLayout(ProGuard:193)
at android.view.View.layout(View.java: …
アプリ側はアップデートしてないのにどういうことなの…
状況
・VolleyのNetworkImageViewを使用してサムネイルを表示してる
・異常に気づく前まで正常に動いていた
・アプリ側はアップデートとかしていない
原因
スタックトレース見てみるとVolleyのRequest.javaの129行目でエラーでてるみたい
mDefaultTrafficStatsTag = TextUtils.isEmpty(url) ? 0: Uri.parse(url).getHost().hashCode();
あ。。。。。 Uri.parse(url)でnullが返ってきているから落ちてるのか。
原因はサーバ側で返しているURLがURI形式でない変な文字列を返していたことだった。
以下の場合ぬるぽがthrowされる
String url = "hoge";
NetworkImageView networkImageView = new NetworkImageView(context);
networkImageView.setImageUrl(url); // ぬるぽで落ちる
とりあえずの回避方法としては、
NetworkImageView networkImageView = new NetworkImageView(context);
if (TextUtils.isEmpty(url) || Uri.parse(url).getHost() == null) {
// エラー情報をAnalyticsのイベントとかで送信してあげるといいかも
} else {
networkImageView.setImageUrl(url);
}