본문 바로가기
[RxJava] #6 안드로이드의 RxJava 활용 [RxJava] #6 안드로이드의 RxJava 활용 - 자바8에는 Stream API 와 같은 Push-based 데이터 처리 기능이 있다. 그러나 안드로이드에서는 이러한 자바 8의 기능을 완벽하게 사용할 수 없다. - 안드로이드에서 RxJava 를 활용할 수 있는 RxAndroid 라는 라이브러리를 사용할 수 있다. 6.1. RxAndroid 소개 - RxAndroid 는 RxJava 에 최소한의 클래스를 추가하여 안드로이드 앱에서 리액티브 구성 요소를 쉽고 간편하게 사용하게 만드는 라이브러리이다. - RxAndroid 의 장점은… 간단한 코드로 복잡한 concurrency 프로그래밍을 할 수 있다. 비동기 구조에서 에러를 다루기 쉽다. 함수형 프로그래밍 기법도 부분적으로 적용할 수 있다. 6.1.1... 2019. 6. 10.
[android] "Memory leak" detect library [android] "Memory leak" detect library https://medium.com/square-corner-blog/leakcanary-detect-all-memory-leaks-875ff8360745 -Square 에서 고객 사인에 대한 OOM 방지를 위해 한 노력들 1. Bitmap.Config.ALPHA_8 로 Bitmap 생성 (color 값이 필요 없는 경우.)2. OutOfMemoryError(이하 OOM) 을 catch 해서 GC 를 강제로 수행하고 retry -Bitmap 이 문제가 아님을 깨달음.OOM 은 memory 가 full 에 가까우면 작은 bitmap 을 생성할 때도 죽을 수 있다.즉, 애초에 memory leak 이 나지 않게 해서 memory footpr.. 2019. 1. 29.
[Objective-C] performSelector: 가 경고를 뿜는다? [Objective-C] performSelector: 가 경고를 뿜는다? http://stackoverflow.com/questions/7017281/performselector-may-cause-a-leak-because-its-selector-is-unknown -Manual Memory Management 시절에서는 performSelector: 가 OK!! -ARC 의 등장으로 performSelector: 는 경고를 내뿜게 되었고.. -Swift 에서는 performSelector: 를 접근하지 못하게 하고, 문서에도 unsafe 하니 쓰지 말라고 해놓았다. -ARC 이후에 performSelector: 를 쓰고 싶다면 이런 방식으로 사용하는 것이 권장된다.ARC 가 detect 하지 못하는 .. 2017. 12. 9.
[Effective Java] static 맴버 클래스를 많이 사용하자. [Effective Java] static 맴버 클래스를 많이 사용하자. - 중첩 클래스(nested class) 혹은 내부 클래스(inner class)는 외곽 클래스(enclosing class)를 지원하는 목적으로만 존재해야 한다. 만일 어떤 중첩 클래스가 일부 다른 분야나 클래스에서도 유용하게 사용된다면 그 클래스는 독립적인 최상위 클래스가 되어야 한다. - 중첩 클래스는 다음 4가지 종류가 있다. static 맴버 클래스 static 이 아닌 맴버 클래스 익명 ( anonymous ) 클래스 지역 ( local ) 클래스 - static 맴버 클래스는 가장 간단한 종류의 중첩 클래스로, 어떤 클래스의 내부에 선언되어 있으며, 그 외곽 클래스의 모든 static 맴버들( private 으로 선언된.. 2016. 11. 17.
[iOS Study] 디버그 도구 [iOS Study] 디버그 도구 출처 : 아론 힐리가스의 iOS 프로그램 -Xcode 5 CPU와 메모리 사용량에 관한 정보를 한눈에 제공하는 디버그 측정기(debug gauges) 가 있다. -디버그 네비게이터는 프로그램 실행 중에(실시 정지나 중단된 경우가 아닌) CPU 와 메모리 측정기를 보여준다. -이 측정기들은 실제 프로그램이 실행 중인 하드웨어를 기반으로 측정한다.Mac 은 iOS 장비보다 가용 램이 훨씬 많고 CPU 코어도 대개 더 많다.따라서 iOS 시뮬레이터에서 프로그램을 실행하면 CPU 와 메모리 사용량은 매우 작게 나타날 것이다. -CPU 디버그 측정기는 편집기 패널에 CPU 리포트를 표시한다. Percentage Utilized 해당 장비가 가진 CPU 코어 수에 상대적인 CPU .. 2016. 2. 26.
[Effective Java] 쓸모 없는 객체 참조를 제거하자. [Effective Java] 쓸모 없는 객체 참조를 제거하자. - 자바와 같이 가비지 컬렉션을 자동으로 해주는 언어는 메모리 관리를 따로 해줄 필요가 없다고 생각하기 쉬우나, 이는 틀린 생각이다. GC 의 원리에 대해 정확히 이해하고 메모리 관리를 해주어야 한다. 다만 그 메모리 관리하는 범위가 C, C++ 과 같은 GC 가 없는 언어들에 비해 더 간단할 뿐! - 자바에서도 메모리 누출(memory leak)이 쉽게 발견된다. 메모리 누수가 생기면, 성능저하의 형태로 서서히 나타난다. GC 작업이 증가하거나, 메모리 할당과 회수 횟수가 빈번해지기 때문이다. 심하면 디스크 페이징 현상이 나타나기도 하고, 아주 극단적으로는 OutOfMemoryError 가 발생한다. 메모리 누수의 무서운 점은, 특정 객체.. 2016. 1. 4.
CI ( Continuous Integration ) 툴 기초. CI 는 무엇인가? CI ( Continuous Integration ) 툴 기초. CI 는 무엇인가? Introduction to CI. ( Continuous Integration ) 연속적 빌드와 인터그레이션은 프로젝트의 성공 여부를 결정짓는 핵심 요소.CI ( Continuous Integration ) 은 프로젝트에 투입되는 시간과 노력을 효율화하는 데 매우 중요한 사안. 이전에는 빌드를 단순히 컴파일로 생각했다.CI 에서는 빌드의 정의에 모든 중요한 유효성 검사 및 테스트 단계 포함.CI는 테스트에 의존. 테스트를 빼면 연속 컴파일만 남음. CI 를 사용할 때는 다음을 유념해야 한다. 1. 빌드를 고장 낸 경우 그대로 방치해서는 안 된다. 2. 고장난 빌드를 제출하면 안 된다. 3. 빌드가 고장난 사실을 발견하면.. 2014. 5. 31.
[android] 삼성 핸드폰 계열의 버그. ( EditText & SoftInput 관련 ) android, 삼성 핸드폰 계열의 버그. ( EditText & SoftInput 관련 ) 알려진 단말 : Galaxy Nexus, Galaxy S3 EditText 에 SoftInput 이 연결된 상황에서 Activity 를 종료했을 경우 Activity가 제대로 destroy 되지 않거나늦게 destroy 가 되어 memory leak 과 비슷한 현상을 보여주곤 한다. activity, activity destroy, activity 종료, android 삼성 핸드폰 계열의 버그. ( EditText & SoftInput 관련 ), destory, EditText, Galaxy Nexus, galaxy s3, memory leak, soft keyboard, softinput, 갤럭시 넥서스, 겔럭.. 2014. 3. 18.
[android] 메모리 최적화에 대한 추가정보들 android, 메모리 최적화에 대한 추가정보들 Activity 나 Fragment 가 멈출 때 비트맵을 재활용하자. - 보통 Activity의 경우 onStop(), Fragment의 경우 onDestryView() 에서 하는 것이 적당하며, Bitmap 이미지의 recycle 을 호출한다. - Activity 나 Fragment 의 종료시에는 View 에 bind 된 drawable 을 끊어주는 것도 중요하다.Drawable.setCallback( null ); 이는 Drawable 이 View 에 bind 되어 있고, View 는 다시 Context 를 통해 Activity 에게 bind 되어 있다는 의미이다. 이를 통해 메모리 릭의 가능성을 배제할 수 있다. 이미지를 load 할 때 줄여서 읽는다.. 2013. 11. 11.
반응형