최근에 volley를 1.1.1로 업데이트를 했더랬다.
그러고 얼마지나지 않아 아래와 같은 이슈가 터졌다.
Caused by java.lang.NullPointerException:
Attempt to invoke virtual method 'com.android.volley.Request com.android.volley.Request.setRequestQueue(com.android.volley.RequestQueue)' on a null object reference
발생 지점을 확인해보니 Deprecated된 newRequestQueue를 사용하고 있었다. 그렇다면 RequestQueue가 무엇일까? document에서는 아래와 같이 설명을 하고 있다.
public class RequestQueue A request dispatch queue with a thread pool of dispatchers. |
그렇다. 우리에게 영어는 쥐약(찍)이다. 좀 알아먹기 쉽게(직독직해라고 하지요) 풀어보자면... "요청 전파 큐". ㅋ
Dispatch queue라고 iOS 개념이 있지만 그것과는 다를거 같다. 요청을 어딘가로 보내기 전에 담을 그릇이 RequestQueue라고 보면 될 것이다. 그래서 캐시 설정같은 것이 있는게 아닐까 싶다. Dispatch라는 의미를 잘 이해못해서 참 많이도 찾아봤는데 역시 선배 개발자 블로거들이 설명을 잘해놓았다.
개념은 이정도로 알아두고 문제점을 다시 바라보자. Deprecated된 newRequestQueue 대신에 무엇을 어떻게 쓰면 될까? RequestQueue를 세팅하는 이슈이기에 document에서 그 부분을 설정하는 것을 참고하였다.
// Instantiate the cache
Cache cache = new DiskBasedCache(getContext().getCacheDir(), 1024 * 1024);
// Set up the network to use HttpURLConnection as the HTTP client.
Network network = new BasicNetwork(new HurlStack());
// Instantiate the RequestQueue with the cache and network.
requestQueue = new RequestQueue(cache, network);
// Start the queue
requestQueue.start();
이 방법이 정답이 아닐 수 있다. 위 코드로 수정하고 난 뒤 해당 이슈는 막은 것으로 보이지만 다른 이슈가 터져서 혹시 여기서 생겨난 나비효과가 아닐까 의심하는 중이다. 그래도 이 포스팅을 보는 분에게 어떤 힌트가 되길 바란다.
'Android, iOS' 카테고리의 다른 글
하다하다 이제 이미지에서도 Crash가 나타난다. 나원참. (0) | 2020.01.15 |
---|---|
Google 버그가 먹어버린 3시간, CoordinatorLayout와 RecyclerView (0) | 2020.01.14 |
큰 이미지가 계속 흐릿해보이면 Glide를 의심해보자 (0) | 2020.01.02 |
JavaScript는 모르지만 WebView에서 사용하고 싶어!! (0) | 2019.11.28 |
ViewPager 안에 수평 스와이핑 View가 또 있다면? (0) | 2019.11.25 |
Comment