안드로이드(Android)

activity!!(느낌표2개) 대신 requireActivity를 사용하는 이유

이망국 2023. 4. 12. 23:20
728x90
반응형

Glide 코드를 짜던 중 activity!!에서 빨간줄이 생겼다.


위의 코드를 간략하게 설명하자면 다음과 같다.

Glide는 글라이드라는 라이브러로 안드로이드에서 이미지를 불러올 때 사용하는 라이브러리다.

with()를 통해 괄호 속에서 Context를 가져온다. 위의 사진에서는 activity에서 가져오는 것이다.

load()는 이미지를 로드하는 방식으로 url 방식임을 뜻한다.

apply는 RequestOption 객체를 사용하여 추가 옵션을 설정하는 메소드이다.


다시 본론으로 돌아와서 with(activity!!)를 보자. 뒤에 느낌표가 2개가 붙은 이유는 컴파일러에게 activity는 null이 아니라고 알려주기 위해 지정하는 것이다. 만약 액티비티가 null이 발생할 경우 'NullPointerException'을 발생시킨다.

위의 코드는 과거 예제를 참고하다 보니 발생한 것인데 추후 안정성 측면에서 다른걸로 바꾸기를 추천하는 듯하다.

 

이에 따른 수정 방안은 with(activity!!)에서 with(requireActivity())로 바꾸는 것이다.

 

코드의 경우 기존의 첫번째 코드에서 두번째 코드로 바꾸는 것이다.

 

[수정 전]

Glide.with(activity!!).load(url).apply(RequestOptions().circleCrop()).into(fragmentView?.account_iv_profile!!)

[수정 후]

 Glide.with(requireActivity()).load(url).apply(RequestOptions().circleCrop()).into(fragmentView?.account_iv_profile!!)

 


activity!! 대신 requireActivity를 사용하는 이유가 알고 싶어 ChatGPT에게 질문하였다. 그 결과 아래와 같은 답변을 얻게 되었다.

질문) activity!!대신 requireActivity를 사용하는 이유는?

답변)
activity!!는 액티비티를 직접 가져오는 것으로, 액티비티가 null이면 NullPointerException을 발생시킵니다.

반면, requireActivity()는 프래그먼트가 액티비티에 연결되어 있지 않거나 액티비티가 null이면 IllegalStateException을 발생시키기 때문에 코드 안정성 측면에서 더 안전합니다.

그래서 액티비티가 null이 될 가능성이 있는 경우에는 requireActivity()를 사용하는 것이 권장됩니다.

즉, Activity에는 requireActivity()를 사용하는 것을 권장한다고한다

728x90
반응형