일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- AAC
- apache nginx
- 이중for문 사용 안하기
- dagger error
- 디자인 패턴 예제
- 변수
- 자바 스레드 예제
- 안드로이드 스튜디오 custom dialog
- hilt error
- 리사이클러뷰 아이템 재사용
- edittext 연결
- 안드로이드 디자인패턴
- 안드로이드 스튜디오 인터넷 연결 확인
- Kotlin
- 객체지향 프로그래밍 5가지 원칙
- 아파치 엔진엑스
- 아파치란
- 다른 객체 리스트의 비교
- recyclerview item recycle
- LifeCycle
- savedinstancestate
- 안드로이드 스튜디오 tts
- apache란
- 안드로이드 스튜디오 커스텀 다이얼로그
- 안드로이드 스튜디오 인터넷 연결 안되어 있을 때
- Thread
- java
- 안드로이드 스튜디오 style
- java thread 예제
- 안드로이드 스튜디오 반복되는 레이아웃 코드
- Today
- Total
Sam Story
2024-7-24 인터넷 연결이 안되어 있는경우 예외처리 본문
프로젝트 작업의 막바지를 달리고 있다.
오늘 수행한 작업은 인터넷 연결이 안되어 있는 경우에 대한 예외처리 이다.
일단 기존의 짠 코드로는 인터넷 연결이 안되어 있는경우 앱을 진입했을 때 에러가 발생한다.
문제를 보아하니 retrofit 객체 초기화에서 문제가 발생 했었다.
기존 retrofit 객체는 각각의 model에 전역변수로 선언 및 초기화가 이루어졌었다.
그리고 retrofit 객체를 초기화 함에 있어서
RetrofitBuilder 클래스를 별도로 만들어서 retrofit 객체 초기화를 정의를 해놨는데
이때 retrofit 객체를 초기화하면서 서버 url을 이용해 연결을 시도하는데 인터넷 연결이
안되어 있으니 에러가 발생했었던 것이다.

그래서 이러한 문제는 retrofit을 사용하는 각각의 모델에 retrofit 초기화 시점을 변경해 적용함으로써
불필요한 객체를 만드는 메모리 낭비도 줄임과 동시에 반드시 이루어지는 통신에만 retrofit 객체를
초기화 함으로써 인터넷 연결이 안되어있는 경우에 예외처리도 수월하게 진행할 수 있었다.

그리고 인터넷 연결이 되어 있지 않은 상황에서의 진입을 확인하기 위해 위에 코드를 이용해
통신이 일어나기전 코드에서 1차적으로 인터넷 연결 상황을 확인 후 인터넷 연결이 되어 있지 않은 경우 다이얼로그를 이용해 이용자에게 안내해주는 방식으로 인터넷 연결 예외처리를 진행 하였다.
그래서 인터넷 연결이 안되어 있는 상태로 앱에 진입하게 되면

위와 같은 다이얼로그로 안내 후 앱을 종료 시킨다.
이 경우는 앱에 진입할 때는 다이얼로그 안내 후 앱을 종료 시키지만
이미 진입해 있는 경우에는 다이얼로그로 안내를 해주고 다시 인터넷 연결을 했을때 정상적으로 이용 할 수 있게끔
최대한 상정해서 진행 하였다.
기본적으로 현재 진행하는 프로젝트 자체가 서버와의 통신을 최소한으로 줄이긴 했지만
어쩔 수 없이 랭킹이라는 시스템을 도입하게 되면서 기본적으로 서비스 이용에 인터넷 연결이 필수조건이 되어버렸다.
본인의 기록을 보는 내용에 있어서는 최초 진입했을대 데이터를 불러올 수 있으므로 괜찮지만
그외에 다른 내용들은 서버와의 상호작용이 없다면 갱신이나 기록에 문제가 생길 수 있으므로
인터넷 연결에 대한 예외처리를 각각의 상황에 맞게 적용하였다.
이 코드들을 적용하면서 확실히 초기화 시점이 굉장히 중요하다.
이 시점을 어떻게 잡느냐에 따라서 유지보수에도 굉장히 많은 영향을 준다. 라는걸 좀 느꼈던 것 같다.
'공부기록' 카테고리의 다른 글
2024-08-19 리사이클러뷰 아이템 재사용 문제 (0) | 2024.08.19 |
---|---|
2024-08-07 Dagger,Hilt에 관한 공부 기록 (0) | 2024.08.07 |
2024-07-29 tts 사용법 (2) | 2024.07.29 |
2024-07-21 scrollView , 다른 객체 리스트의 비교 (1) | 2024.07.21 |
2024-07-19 레이아웃 style 적용 , strings 파일 이용 (0) | 2024.07.19 |