Android20 Memory Leak 에 관하여 앱을 출시 하고나서 관리 하다보니 겪은 일이었습니다. 앱이 버벅대고 느려진다는 이슈였습니다. 굉장히 크리티컬한 이슈였지요. 원인을 찾아보니 OOM(OutOfMemory Exception) 에러였습니다. 허용 가능한 메모리가 꽉 차서 앱이 죽는 현상이 발생하는 것이었습니다. 이 원인을 해결하기위해 엄청나게 많은 시간을 쏟아부었습니다. 앱 내에 이미지를 보여주는 부분이 많았는데, 용량이 큰 이미지를 불러오거나 할 때 제대로 GC (Garbage Collect)가 되지않아서 메모리에 지속적으로 쌓이는 것이었습니다. 하지만 원인자체가 이미지 문제가 아니었습니다. 원인은 객체의 참조로 인해 화면 종료시 GC가 제대로 되지 않으면서 계속적으로 Activity 객체들이 쌓이게되고 큰 이미지를 가지고 있는 Activi.. 2018. 3. 26. 프로가드(Proguard), Retrofit 사용시 주의할 점 앱 출시후 굉장히 당황스런 상황이 있었습니다. 올리기 전 테스트할 때는 정상적으로 모든 기능이 잘 되던 것이 출시 후 기능이 아무것도 안되던 현상이었습니다. 원인으로는 프로가드(Proguard) 적용한 것이 문제였습니다. Retrofit을 사용시 Response 값으로 앱 내에서의 Beans 들의 변수 명에 맞게 매핑이 되도록 되어있는데, 프로가드를 적용하면서 앱 내의 Beans 들의 변수명이 다 바뀌면서 서로 매핑이 되지 않아서 발생하는 오류였습니다. 그래서 해당 Beans들이 있는 패키지 경로를 프로가드(Proguard) 예외에 추가하여 해결하였습니다. Retrofit과 프로가드(Proguard) 사용시 참고하셨으면 좋겠습니다. 2018. 3. 26. Null 체크를 꼭 해야하는가 출시 후 또는 개발 하면서 항상 겪는 Crash Error 중 제일 많은 부분이 NullPointerException 오류였습니다. 처음 앱을 개발할 때에는 Null 체크를 제대로 하지 않은 채 기능의 동작여부만 확인 및 테스트 후 바로 출시 하곤 했습니다. 우선 이런식으로 개발을 하면 기본적으로 서버 측(Back-End) 과 클라이언트(Front-End) 측의 거의 발생하지 않는? 이슈 ( 트래픽 증가로 인한 서버 다운, 빈 데이터나 또는 null 데이터의 통신 등) 가 발생하지 않는다면 큰 문제가 없이 유지가 됩니다. 하지만 이런 상황들은 꼭 출시 후 일어나서 당황스러운 상황이 발생합니다. 서버측에서 보내는 json데이터가 조금만 바뀌어도 에러가 발생하는 상황이 발생할 수도 있습니다. 따라서 내린 결.. 2018. 3. 26. Android architecture 앱을 처음에 설계하는 데 있어 좋은 참고 링크가 있어 공유합니다. 참고하세요. (참고) http://kimjihyok.info/2017/05/29/안드로이드에서-clean-architecture의-흔적과-장점/ 2018. 3. 26. 디자인 패턴 (Design Patterns) ( 참고 - http://tosslab.github.io/android/2015/03/01/01.Android-mvc-mvvm-mvp ) 디자인 패턴에는 MVC , MVVM, MVP 패턴 등 여러가지가 있다. 현재 나는 ButterKnife, Otto 라이브러리를 같이 이용해서 MVC 패턴을 적용해보았다. 이 모든 패턴들은 유지보수 관리도 중요하지만, 절대적으로 View와 로직 간의 분리인 듯 하다. 따라서 나는 MVC 패턴유형을 선택하였다. model && view 폴더를 새로 잡아서 각각의 Activity에 대해 매칭되는 View와 Model을 생성하였고. View 클래스에는 View에 관련된 작업을 하게되며, Model 클래스에는 로직에 관련된 작업을 하게된다. Activity에서는 컨트롤러의 역할.. 2018. 3. 26. 이미지 Color Filter 적용 ImageView 에 컬러필터와 Overay (tint) 효과를 주는것은 완전히 달라보입니다. 방법은 두가지 입니다. 1. tint2. color filter tint 를 주면 완전 위에 덮어버리는 식이 되는데,color filter를 이용하면 안에 들어있는 이미지의 색상에 아에 녹아들어 전혀 다른 효과로 보이게 됩니다. 좀 더 시각적으로 나아보이는 부분을 선택하세요. 예>ImageView.setColorFilter(Color.RED, PorterDuff.Mode.Lighten); 2018. 3. 26. 이전 1 2 3 4 다음