요즘 안드로이드 앱 개발하며 API 연동 많이들 하시죠. 화면 내용 불러올 때 특히 자주 이용됩니다. 그런데 주의해야 할 점이 있습니다. API 실행 중에 화면이 종료된 후 오류가 발생할 수 있다는 점입니다. API 완료 후 화면 작업을 실행할 콜백이 설정되는데요. 화면이 종료된 후, 여전히 살아있는 콜백이 사라지고 없는 화면에 접근하는 것이 오류의 원인입니다. 화면 종료시 콜백이 실행되지 않도록 세심한 코딩을 해야 합니다.
코틀린 언어를 사용한다면, 코루틴을 사용하는 것이 편리합니다. 액티비티나 프래그먼트에서 API를 실행할 때 아래와 같이 코루틴 빌더를 사용하면 코드 블록 { ... }은 액티비티, 프래그먼트 종료시 같이 종료 됩니다. viewLifecycleOwner.lifecycleScope의 생명주기는 이들과 동일하기 때문입니다.
viewLifecycleOwner.lifecycleScope.launch {
// API 연동 실행
}
코루틴의 필요성이 점점 눈에 띄게 보이고 있네요. 이에 대해서 안드로이드 개발 팁으로 보다 자세히 정리할 예정입니다.
지난 안드로이드 앱 개발기
- #38 - 정렬 사용 방법도 알아두면 좋겠습니다
- #37 - 인터페이스를 자바 언어로 정의하는 이유
- #36 - 하이브리드 앱 만들면서 웹뷰 관련 구현해야 할 것들
- #35 - 코루틴 학습하면서 추가로 알아야 하는 것들
- #34 - 맥북에어로 안드로이드 앱 개발은 무리인가...?
- #33 - build.gradle.kts 파일 수정 후 발생한 빌드 오류 AAPT: error: resource android:attr/lStar not found
- #32 - 가독성 증진을 위한 확장 함수 사용
- #31 - RxJava2 사용하며 만난 NullPointerException: The mapper function returned a null value.
- #30 - 나이트 모드를 고려하지 않아 메인 화면 시작시 발생한 IllegalStateException
- #29 - 잊고 있었던 앱 재시작 샘플 코드
- #28 - 문자열 리소스 파일 strings.xml 어떻게 작성하면 좋을까?
- #27 - 클린 아키텍처에서 domain 모듈
- #26 - 클린 아키텍처 구현을 위한 모듈 구성
- #25 - 스팀 관련 샘플 코드 만들면서 잘못한 점
- #24 - 시작 화면 구성 요소 식별하기
- #23 - 프로젝트 초기 화면 구성부터 대략적으로...
- #22 - Kotlin 코드로 JavaScript 코드를 실행할 수 있을까?
- #21 - 실습 도중 발생한 오류: A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
- #20 - 클립보드에 텍스트 복사하는 함수 만들어 보기 (Kotlin)
- #19 - 데이터 바인딩 적용했으나 UI 자동 업데이트 되지 않는 문제
- #18 - 에뮬레이터에서 토스트 안 보이는 문제 (1)
- #17 - 유닛 테스트를 실행할 수 없는 문제 해결
- #16 - 잘 되던 유닛 테스트를 실행할 수 없는 문제
- #15 - 앱 재시작 코드
- #14 - Fragment 사용시 간혹 발생할 수 있는 Fragment not attached to Activity 문제
- #13 - Retrofit2 활용 서버로부터 받을 데이터 유형 JsonElement (JSONObject 사용 불가)
- #12 - Glide 활용하여 이미지 다운로드 받는 코드
- #11 - 처리할 수 없는 예외/크래쉬 발생시 앱 재시작하기
- #10 - 안드로이드 스튜디오 업그레이드 후 단축키가 안되면? (맥북)
- #9 - LiveData 객체에 동일 데이터 설정하면 observer 실행되는지 확인 목적의 샘플 프로젝트
- #8 - 안드로이드 스튜디오에서 빌드시 발생하는 Build Tools revision 31.0.0 오류
- #7 - 'UGC(사용자 생성 콘텐츠) 정책 미준수'로 심사 거절
- #6 - 뷰에 역마진 적용 불가시 translationX, translationY 속성 사용하기
- #5 - 프로젝트 생성 후 빌드시 발생 오류: The minCompileSdk (31) specified in a dependency's AAR metadata
- #4 - 프로젝트 생성 후 빌드시 발생 오류: The minCompileSdk (31) specified in a dependency's AAR metadata
- #3 - 무한 롤링 배너 만드는 법을 찾았으나, 높이를 wrap_content로 지정이 안 먹히는 문제점이...
- #2 - setContentView 메소드의 파라메터를 변경하지 않아서 발생한 화면 오류
- #1 - 페이스북 로그인 연동시 발생했던 문제들
Posted through the AVLE Dapp (https://avle.io)
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Upvoted! Thank you for supporting witness @jswit.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
코딩역량가진분들 존경합니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
별말씀을요... 감사합니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit