안드로이드 glide 이미지갱신 안됨

작년부터 시간날때 마다 앱개발을 하고 있습니다. 그중에서 가장 편하게 사용하고 아끼는 라이브러리 중 하나인 GLIDE가 있는데요. 예전부터 그냥 쭉 써오다가 이미지 갱신이 안되는 문제가 생겨서 이것저것 알아보았습니다.

 

결론부터 말씀드리면, 참 제가 모자랐구나 라는 생각이 들었네요ㅎㅎ

GLIDE 이미지 라이브러리 버전이 업데이트되면서 옵션적용 방법이 달라졌습니다. 대부분의 오래된 글들을 참고하려고 하시면 제대로 사용을 못하실듯 하네요.

 



GLIDE란 ?
앱개발에 있어서 용량은 무척중요합니다. 툭하면 Out of Memory 경고창을 볼 수가 있는데요. 특히 이미지 처리를 하는건 너무나도 어려운 일입니다. 웹 경로에 있는 이미지를 사용한다면 더욱 어려워 지는데요. 이미지 경로를 확인한뒤, 이미지를 스트림으로 받아서 비트맵으로 변환하고 다시 용량을 줄이고 등등..

이러한 기능을 한번에 해결해 주는 라이브러리가 GLIDE이며, 사용법도 무척이나 간단합니다. 사용할 주소와 해당되는 이미지 뷰만 명시를 해주면 간단하게 이미지가 적용이 됩니다. 

속도뿐만 아니라 용량에 있어서도 아주 효율이 좋기 때문에 이미지 처리 대부분을 이 라이브러리를 사용하고 있죠.

GLIDE 는 웹경로에 있는 이미지를 표기하는 라이브러리 입니다. 실재로 다운을 받아 처리하지는 않습니다.

 

 

 

 

GLIDE 사용시 이미지 갱신이 안되는 현상이 발생
이제까지는 경로를 바꿔가면서 테스트를 계속 하다가 이미지를 바꿔가면서 바뀐내용을 화면으로 확인하려니 바뀐 이미지가 적용이 안되는 현상이 발생하였습니다.

왜냐하면, GLIDE의 경우 이미지를 캐쉬로 가지고 있어서 경로가 바뀌지 않은 이상 재갱신을 하지는 않는다고 하는데요. 최대한의 효율을 위해서 그렇게 설계가 된듯합니다.

다만, 이미지 경로가 바뀌지 않고 내용이 바뀌다보니 특정한 이미지의 반영을 환영하기가 무척 어려웠습니다. 그래서 GLIDE에 적용되어 있는 디스크캐시기능을 OFF하려고 옵션 적용을 하려는데, 문제가 있네요.

GLIDE의 경우 아래 문구로 호출을 하며 옵션을 붙어서 기능을 동작시킵니다.
glide.with("콘텍스트").url("주소").into("대상이미지뷰");

여기에서 apply 옵션이나 diskcache 옵션을 사용을 하려니 적용이 되지 않는 문제가 발생하였습니다. 제가 잘몰라서 적용을 못하고 있다가 처리방법이 문제인걸 발견하였네요. 아래 방법으로 적용하시면 됩니다. 디스크캐쉬, 메모리캐쉬전부 초기화 하며, 로드할때 마다 이미지를 갱신하게 됩니다.

 

        Glide.with(getApplicationContext())
                .load(Api.BASE_URL + introUrl)
                .apply(new RequestOptions()
                        .signature(new ObjectKey("signature string"))
                        .skipMemoryCache(true)
                        .diskCacheStrategy(DiskCacheStrategy.NONE)
                )
                .into((ImageView) findViewById(R.id.intro_id));   //이미지뷰 이름