Android 썸네일형 리스트형 [Android] 카카오 SDK 설치 안 되는 이슈(Fox 버전 이후) 프로젝트를 새로 파야해서 카카오 SDK를 연동하기 위해 가이드 문서대로 했는데 계속 SDK를 못 찾는다고 하는 상황이 발생했다. 분명 Project gradle과 app gradle 둘 다 제대로 입력했었는데 말이다...... 그래서 알아보니 Android Studio Fox 버전 이후부터 해당 상황이 발생한 것으로 확인되었다. 방법은 settings.gradle에 repositories에 카카오 저장소를 추가하면 된다. 참고 : https://devtalk.kakao.com/t/sdk/118212/2 [Android] MVP 패턴에서 각각의 역할 회사 면접에서 면접관으로 들어가게 되면 대부분 물어보는 것 중 하나가 MVC, MVP, MVVM 중 하나인 것 같다. 본인들 포트폴리오에도 써 있는 부분이기도 하기 때문에 검증을 하려고 하다보니 물어보게 되는 것 같은데... 생각보다 각각의 역할에 대해 제대로 대답한 지원자들이 없었던 것 같다. 신입들은 물론이고 그래도 년차가 쌓이신 분들도 간혹 잘못 알고 계신 분들이 많은 것 같아 정리하고자 한다. M(Model) - 비즈니스 로직 담당 - 데이터 처리 및 가공 P(Presenter) - UI 비즈니스 로직 담당 - 데이터 처리 혹은 가공이 여기서 일어나면 안 됨 - 데이터가 필요한 경우 : View로부터 입력을 전달받음 -> 비즈니스 로직이 필요한 경우 Model에 요청 -> UI 비즈니스 로직에 따.. [Android] 멀티스레드에 대한 개인적인 생각 Java를 공부하다보면 Thread라는 녀석을 볼 수 있다. 공부할 당시에는 '이게 왜 필요하지?'라는 생각이 처음에 들었었고 또 이걸 실제로 적용을 어떻게 시키는지에 대해서도 이해가 잘 안 되었던 것 같다. 그래서 첫 회사에서 멀티스레드로 구현을 하면서 많은 이슈(에러 및 버그)를 겪었었고 그 과정에서 정리할 수 있었던 포인트에 대해 정리해보려고 한다. 아마 신입들한테 도움이 되지 않을까 싶다.(스레드 고수들은 굳이 안 읽어도 됩니다...) 1. 멀티스레드는 왠만하면 피해라. 이제 막 신입 아니면 스레드에 익숙치 않은 개발자라면 특히 해당된다. 멀티스레드로 에러가 발생한다면 사수 없이 찾기란 거의 불가능에 가깝다고 생각한다. 경험이 좀 쌓이고 나서 해도 늦지 않다...... 2. 라이브러리를 잘 활용하.. [Android] 로그에 대한 개인적인 생각 개발자라면 업무 중에 무조건 볼 수 밖에 없는 것이 로그다. 개발을 하면서 로그를 좀 더 현명하게 사용할 수 있지 않을까라는 생각 때문에 이 글을 쓰게 되었다.(안드로이드 기준이지만 다른 분야에도 적용가능한 부분일 듯......) 로그에 대해 아무런 생각이 없었을 때 - 단순하게 디버깅을 위한 용도로 많이 사용 - 안드로이드의 Logcat에서 내가 찍은 Debug 로그와 죽을 때 받는 Error 로그들만 주로 확인. 아마 대부분 초보 개발자 분들이나 혹은 구현이 목표인 개발자 분들은 로그를 위와 같이 생각하고 대하지 않을까 싶다. 하지만 서비스를 운영하고 유지보수하게 되면 위와 같이 생각할 경우 매일 버그와 뒹굴다가 지치는데 많은 힘을 쏟게 되는 경우가 흔한 것 같다.(정말 잘 개발하시는 분이 아니고서야.. [Android] FrameLayout에서 현재 보이고 있는 Fragment 클래스명 알아오기 FrameLayout에서 Fragment를 교체해서 쓰고 있는 경우에는 다음과 같이 하면 된다. 해당 액티비티의 fragmentManager에서 0번째 Fragment를 받은 다음 타입을 확인하면 된다. getSupportFragmentManager().getFragments().get(0) instanceof [확인할 class명]; 이걸로 addOnBackStackChangedListener에서 체크하면서 각 프래그먼트별로 조정해야할 UI나 로직을 적용하면 된다. [Android] google mvp 샘플의 Injection.class 문제 flavor 별로 다 설정해 놓았음에도 불구하고 Injection 클래스를 계속 못 찾는 문제가 있었다. Dagger를 사용한다면 이럴 일은 없겠지만 직접 DI를 샘플을 따라 구현한다면 다음과 같은 문제를 계속 마주치게 된다. 분명 소스는 있는데 해당 소스를 못 찾는..... Invalidate cache도 하고 clean도 하고 Rebuild도 하지만 flavor를 변경할 때마다 계속 문제가 있어서 인터넷에도 찾아봤는데도 원인을 파악할 수가 없었다. 그래서 혹시나 하는 마음에 Injection이라는 class 이름 대신 다른 이름으로 클래스명을 바꿨더니 이게 웬걸 변경을 해도 너무 잘 빌드가 된다. 소스에서 해당 클래스를 못 찾아서 빨간 줄이 가는 현상도 해결이 되었다. 원인은 일단 나중에 찾아보고 이.. [Android] Android Geocoder maxResults 값에 대해서 안드로이드에서 위경도로 주소명을 받을 때 Geocoder 객체의 getFromLocation API를 사용한다. 그런데 getFromLocation에서 결과값 리스트가 비어서 오는 경우가 있었다. 파라미터는 위도, 경도, 그리고 문제의 maxResults 세 개였고 maxResults 이름만 보고 결과값을 최대 몇 개까지 받을 것인지에 대한 파라미터로 추측했었다. API 문서에서도 보면 딱히 자세한 설명도 없고 예제 샘플이나 다른 사람들이 한 것을 보더라도 maxResults 값을 1로 하고 있었기에 추측하고 있는 것이 맞는구나라고 생각했던 것 같다. 봤던 API 문서의 경로는 다음과 같다. developer.android.com/reference/android/location/Geocoder Geoco.. [Android] Retrofit2 응답 대응 처리 onResponse : 서버로부터 응답이 정상적으로 온 경우에 대해서 처리 200, 401, 403 등등의 정상적인 서버 응답 onFailure : 에러 때문에 네트워크 요청 실패 혹은 응답에 문제가 있는 경우에 대해서 처리 Exception 기준으로 분리할 수 있음 java.net.UnknownHostException(해당 호스트를 찾을 수 없는 경우 - 서버가 내려갔다던가... 등등) java.io.IOException(이 경우는 2가지 상황이 있었음) 네트워크 에러 파싱 에러 Retrofit2의 기존 컨버터 이용시 해당 형식으로 파싱이 안 되는 경우 발생 GsonConverter의 경우 모든 Response가 Json형식으로 와야하는데 아무런 데이터가 없는 경우에도 이 에러가 떴음(내부적으론 Jso.. 이전 1 2 3 4 5 6 다음