List와 LiveData의 사용시 Observer 에게 Notify 언제, 어떻게 해야할까…?

AAC LiveData의 등장으로 데이터바인딩 라이브러리 사용시 MVVM아키텍처와 맞물려 데이터와 UI간의 동기화하는 코드를 많이 사용하고 있습니다. 단수의 Data를 다루는데 있어서 LiveData는 편리했습니다. 기존 BaseObservable을 구현한 클래스에서 notifyChange 또는 notifyPropertyChange를 처리할 필요도없고, 생명주기를 알고있다는 점이 좋았습니다. 하지만, 복수의 Data인 List 또는 ArrayList 타입을 LiveData로 감싸서 사용하는 경우가 왕왕 생기곤 하는데요. 이 경우에 더보기…

글쓴이 Charlezz,

Parcelable과 Serializable 비교

Parcelable vs Serializable 종종 앱을 개발하다보면 액티비티와 같은 안드로이드 컴포넌트에 POJO같은 데이터를 전달해야 할 일이 있습니다. 액티비티 객체는 우리가 만들지 않고 안드로이드 시스템에서 관리하고 있으므로 컴포넌트로 데이터를 전달하기 위해서는 반드시 인텐트를 통해서 전달하게 됩니다. Serializable Serial(직렬의) + ~able(~가능한) Serializable(시리어라이저블)은 자바 표준 인터페이스 중 하나로 안드로이드 SDK에 포함되어있지 않습니다. 어쨌거나 전달하고자 더보기…

안드로이드에서 Dynamic Proxy 사용하기

Proxy란? 일반적으로 대리자/대리인을 의미하며, 자바에서는 타겟을 감싸서 타겟을 요청을 대신 받아주는 Wrapping Object를 뜻합니다. Proxy 패턴은 디자인 패턴의 일종으로 자바의 Reflect 패키지에 있는 Proxy를 이용하여 원래 객체의 변경 없이 기능을 특정 방식으로 제어 하는 구조를 제안합니다. Reflection(리플렉션)에 대해서 알아보려면 이전 포스트를 참고하시기 바랍니다. 프록시 패턴의 장점 목표 기능 수행 전/후에 더보기…

안드로이드와 Java의 Reflection

Reflection이란? Reflection은 자바 언어의 기능중 하나로 프로그램 내부 속성을 조작 할 수 있게 합니다. 예를 들어 Java클래스가 가지고 있는 모든 멤버의 이름을 가져와서 표시 할 수 있습니다. 다른 언어에서는 이러한 기능이 보통 존재하지 않습니다. 예를 들어 파스칼, C,C++ 등의 언어에서 정의 된 함수에 대한 정보를 얻는 방법은 없습니다. 간단한 리플렉션 더보기…