본문 바로가기
반응형

Android145

RetryWhen 으로 다시 시도 (Retry) 구현하기 #RxJava 네트워크를 한다던지, 서버 클라이언트 관계를 만들경우,연결이 되어있지 않거나, 원하는 정보를 아직 받지 못할 경우가 있습니다.이럴 때, RxJava의 Operator인 RetryWhen을 사용하면 한결 쉽게 이러한 처리를 할 수 있는데요. 오늘은 이 retryWhen에 대해서 정리해보도록 하겠습니다. 1. RetryWhen 오퍼레이터 RxJava의 Retry 오퍼레이터는 error가 생기면, 자동으로 다시 subscribe해주는 메소드인데요.이 retry에 조건 when을 붙인것이 retryWhen 입니다. 우선 마블다이어그램 먼저 보시죠.굉장히 복잡하지만, 조금씩 정리해 보겠습니다. 참고로 마블 다이어그램에 대해서는 아래 글을 참조해주세요.>>> RxJava (RxAndroid) 의 마블 다이어그램을 .. 2017. 5. 25.
RxJava (RxAndroid) 의 마블 다이어그램을 이해해보자. RxJava의 공식문서를 보면, 다양한 Operator들을 마블 다이어그램을 중심으로 설명하고 있습니다. 아래의 이미지는 reactivex.io사이트에 나와있는, Observable에 대한 설명인데요.역시 마블 다이어그램으로 설명되어 있네요. 아무것도 모르는 상태에서 보면, "이게 뭐지?" 싶지만, 하나하나 잘 살펴보면, 이해를 도와주는 좋은 툴이 될 수도 있습니다.오늘은 이 마블 다이어그램에 대해서 하나하나 뜯어보면서, 정리해 보도록 하겠습니다. 참고로, RxAndroid의 기본적인 사항에 대한 것은 아래 글을 참조해주세요. >>> RxAndroid 이해하기 Part1 2017. 5. 24.
Wifi / 3G 네트워크 연결 상태를 확인하는 ConnectivityManager 안드로이드 앱을 만들면서, Wifi나 3G를 사용해서 인터넷에 연결되어야 할 경우,사용자의 스마트폰이 연결되어 있는지 체크해야 할 필요가 있습니다. 오늘은 이 경우에 어떻게 해야 하는지 정리해 보도록 하겠습니다. 1. Permission 설정 안드로이드에서 코딩을 하면서, 항상 체크해봐야 할 것이 이 API가 Permission이 필요한 것인가 인데요.네트워크 상태를 알아볼 때에도 역시나 permission이 필요합니다.다행인 것은 동적 permission을 요구하지는 않으므로,Manifest에서 android.permission.ACCESS_NETWORK_STATE 에 대해서 uses-permission태그를 추가해주면 됩니다.(네트워크 사용에 대한 것이므로 internet 사용permission을 요.. 2017. 5. 23.
OKHttp 의 Application Interceptor 와 Network Interceptor 안드로이드 앱을 만들면서 네트워크 라이브러리로 무엇을 쓰시나요? 물론, 구글 개발자사이트에서 코드까지 제공해주는 Volley Library도 있긴하지만, 실제로 구글도 많이는 않쓴다고 하지요. 저와 제 주변에서는 OKHttp가 많이 쓰이는 것 같은데요. 오늘은 이 OKHttp를 사용하면서 쓰게되는 Interceptor라는 것에 대해서 정리해보고자 합니다. Interceptor는 말 그대로 낚아채는 것인데요. 네트워크 통신을 하는 중간에, 무언가를 공통적으로 실어보내거나 받아서 써야 할때 사용합니다. 크게 두가지가 있는데, Application Interceptor와 Network Interceptor가 있습니다. 1. Intercept는 두번 한다. 두가지 Interceptor에 대해서 알아보기 전에, .. 2017. 5. 22.
Activity 화면이 꺼지지 않도록 하려면? 앱을 만들다 보면, 유저의 입력을 받지 않아도 계속 화면이 켜져 있도록 해야 하는 경우가 있는데요.이 경우에는 어떻게 해야할가요?XML에서 설정해주는 방법과, Java코드에서 하는 방법이 있는데요.하나하나 알아보겠습니다. 1. XML에서 설정하는 방법 아래와 같이, android:keepScreenOn="true" 을 해주는 것 만으로, Activity실행이후에 유저가 화면을 끄지 않는 한은 Sleep 모드로 들어가지 않습니다. 2. Java Code에서 설정하는 방법 JavaCode에서 설정하는 방법도 한 줄이면 되는데요.>> getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);이 코드를 추가해주기만 하면됩니다. 참고로, Cpu가 .. 2017. 4. 21.
clipChildren 으로 ViewGroup의 범위를 벗어나는 안드로이드 UI 안드로이드 앱을 만들면서, UI작업을 하다보면 ViewGroup의 범위를 벗어나도록 표현해야 할 경우가 생깁니다.무작정 마이너스 마진을 넣는다고 되지는 않구요. ViewGroup의 clipChildren 옵션을 사용해야 하는데요. 오늘은 이 clipChildren옵션을 사용해서 VIewGroup범위를 벗어나는 UI를 그리는 방법에 대해서,실제로 코드를 작성해보면서 정리해 보겠습니다. 1. ViewGroup에 ClipChildren 적용하기 ViewGroup중 하나인 RelativeLayout에 ClipChildren을 먼저 적용해 보겠습니다.이 옵션은 ViewGroup의 Child가 부모의 범위안에서 그려지도록 제한할지를 정하는 옵션입니다.false를 주지 않으면 기본값인 true로 되어서, 아무리 마이.. 2017. 4. 17.
안드로이드의 Multi Thread, Runnable, Looper 그리고 Handler 오늘은 멀티Thread와 관련된 Runnable과 Looper 그리고 Handler에 대해서 정리해 보겠습니다. 1. 멀티 Thread Java의 JVM에서는, 하나의 Process에서, Thread 라고 하는 코드를 실행시키는 객체를 여러개 가질 수 있도록 허용하고 있습니다.이를 활용하여, 복잡한 계산이라든가, 네트워크 등의 실행을 다른 쓰레드에서 효율적으로 실행할 수 있도록 하고 있는데요.멀티 Thread를 실행하는데 관련된 요소들을 정리해 보도록 하겠습니다. 1-1. Process 와 Thread 먼저 쓰레드가 속해있는 Process에 대해서 정리해 보겠습니다. Process는 실행중인 프로그램의 객체를 의미하는데요.이를 Android를 기준으로 생각해보겟습니다. Android에서 앱을 실행할때, .. 2017. 4. 9.
BindService 의 생성과 Activity 에서의 Bind 안드로이드 앱을 만들다보면, 백그라운드에서 동작하고 있는 Service와 Activity간에 인터랙션이 필요한 경우가 있습니다. 단순히 Service를 stop하고 start하며, intent로 데이터를 전달하는 것 뿐만이 아니라, 사용자의 터치등에 반응하여, Service의 메소드를 실행하고 결과를 Activity의 UI에 반영해주어야 하는 경우인데요. 오늘은 이를 가능하게 해주는 BindService를 생성하고, Activity에서 Bind하는 방법에 대해서 정리해보겠습니다. 1. Bind 서비스 생성 Bind 서비스를 생성하기 위해서, BinderClass를 상속받아서 사용할 수도 있구요. Messenger를 이용하는 방법도 있는데요. 같은 App이고, 같은 Process에 속해있는 Service와.. 2017. 4. 4.
Google Map 에서 내 위치 지도에 표시하기 이번 글은 Android에서 Google Map API 이용해 지도 화면 만들기에 대해 다루었던 예전 글에서 이어지는 내용입니다.Android Studio를 이용해서, 구글맵 화면을 만드는 것에 대해서는 아래 링크에서 먼저, 제 글을 읽어주세요.>>> Google Map API 이용해 지도 화면 만들기 Android 에서 동적 권한 얻기 2017. 4. 3.
SparseArray 가 무엇인가요? HashMap의 키값으로 Integer를 사용하면, Android스튜디오가 퍼포먼스 향상을 위해서 SparseArray를 사용하라고 하는 것을 본적이 있으신가요?저도 종종 보게되는데요. 오늘은 이 SparseArray에 대해서 간단히 정리해보도록 하겠습니다. 1. SparseArray SparseArray는 integer값을 Objects에 매핑을 해주는 것인데요.특이한 점은, 각 인덱스 사이에 공간을 만들수 있다는 것입니다.(예를 들면, 1~10번에 아이템들이 있고, 그다음에 11~20번은 비우고, 30~40번에 아이템들을 넣을 수 있다는 것이죠.) 성능향상을 위해서 SparseArray는 데이터가 지워지면, deleted로 표시하고 그 공간을 비워놓습니다.(물론, 지워진 데이터의 키값을 주고 데이터를.. 2017. 3. 29.
Android 에서 wake lock 으로 휴대폰을 깨우자. 알람앱 같이 안드로이드 폰이 잠들어 잠들어 있다가, 일정시간이 되면 앱의 화면이 켜져야 한다면 어떻게 해야할까요?이 때 사용할 수 있는, 안드로이드 시스템에서 제공해주는 기능으로 wake lock 이라는 것이 있는데요.오늘은 이것에 관해서 정리해보겠습니다. 1. Permission 선언 제일 먼저 해야할 것은 permission을 선언하는 것입니다.너무도 다행스러운 것은 동적 permission의 대상은 아니라는 것이네요.아래와 같이 manifest에 선언해주면 됩니다. 2. Cpu 깨어있도록 하기 사용자의 휴대폰이 Sleep모드로 들어가도, 폰의 CPU가 깨어있다면 일정한 시간에 계산을 해서,화면을 켜고 소리를 플레이 하는 등의 과업을 수행할 수 있습니다. 이것은 어떻게 하는 것일까요?Cpu가 깨어있도.. 2017. 3. 23.
안드로이드 Notification 구현하기 feat. Big View 모바일 앱에서 매우 중요한 스펙중하나가, 유저에게 정보를 알려줄 수 있는 Notification인데요.오늘은 이 기능에대해서 정리해보려고 합니다. 유저에게 정보를 알려줄 때에 사용하는 클래스는 NotificationBuilder 클래스인데요.하위호환성을 위해서, 구글에서 제공해주는 Support라이브러리의 NotificationCompat.Builder클래스를 사용해야합니다. 1. Noti버튼 XML 생성 먼저 아래와 같이, Notification을 생성하는 버튼을 XML파일에서 만들겠습니다. 2. Notification Builder 필수 메소드 구현 제일 먼저 구현해야하는 것은 NotificationCompat.Builder클래스입니다.필수로 구현해야하는 메소드는, 아래에서 구현한 것과 같은데요.아이.. 2017. 3. 21.
RxJava 의 FlatMap, From 그리고 filter 로 For문 에서 벗어나보자 RxJava의 장점중의 하나는 다양한 Operator의 제공인데요.오늘은 FlatMap과 From을 사용하여서,Observable이 흘려보내준 List아이템들을,for문을 돌리지 않고 filter를 하여,원하는 결과만을 얻을 수 있도록 하는 방법에 대해서 정리해보겠습니다. 혹시 RxAndroid 가 무엇인지에 대해서, 보고싶으시다면,아래의 글을 참조해 주세요~.>>> RxAndroid 이해하기 Part1 RxJava (RxAndroid)의 Map 과 FlatMap 메소드를 알아보자 RxJava (RxAndroid) 의 마블 다이어그램을 이해해보자.) 하나의 Collections를 받아서, 각각의 아이템으로 흘려보내준다는 것을 알 수 있습니다. filter는 Operator의 단어만 봐도 아실것 같은데요... 2017. 3. 20.
Hot Observable 과 Cold Observable은 무엇인가요? 오늘은 RxAndroid의 Hot Observable과 Cold Observable에 대해서 정리해 보겠습니다.Hot하고 Cold하다는 것이, 어떤 면에서 차이가 있는지 알아보고,Cold Observable을 사용하는 Operator도 정리해보겠습니다. 참고로, RxAndroid의 기본적인 사항에 대한 것은 아래 글을 참조해주세요. >>> RxAndroid 이해하기 Part1 2017. 3. 19.
Callable 과 Runnable 뭐가 다른가요? 이전 글에서 Thread에 대해 정리하면서,Runnable에 대해서도 정리하였었는데요. 오늘은 Callable과 Runnable을 비교해 보도록 하겠습니다. 참고로 이전에 Runnable을 정리한 글은, 아래링크를 참조해 주세요.>>> 안드로이드의 Multi Thread, Runnable, Looper 그리고 Handler 2017. 3. 18.
Bit 논리 연산과 시프트 연산 의 정리 오늘은 bit의 논리 연산과 시프트에 대해서, 정리해 보려고 하는데요.Bit가 대체 무엇인지 먼저 알아보겠습니다. 1. Bit = Binary Digit Bit는 Binary Digit의 약자인데요.컴퓨터에서 사용하는 가장 작은 단위 데이터 단위입니다. Binary가 2개를 의미히고, digit은 자리를 의미해서,합쳐서 2개의 자리수라는 뜻인데요. 여기서 의미하는 2개의 진수는 0과 1을 가르킵니다. 2진수를 구하는 방법은 다른 글에서 정리를 하구요.(특히 음수를 표현하는 방법은 따로 정리할 필요가 있을 것 같네요.)오늘은 자바에서 제공하는 toBinaryString()메소드를 이용해서, 10진수인 88의 Binary값(즉, 2진수)를 뽑아보겠습니다.(참고로, 자바에서 8진수는 toOctalString(.. 2017. 3. 16.
Parcelable 을 사용해 데이터를 전달해 보자 안드로이드에서 Intent를 통해서 Activity로 data를 전달할 때, String이나 int같은 기본형이 아니고, 객체로 전달해야 할 때가 있습니다. 이때 Java에서 제공하는 Serializable을 implement하면 ,객체를 직렬화해주고, 다시 복원할 수 있게 해주구요. putExtra()에 인자로 넣어서 넘겨주기만 하면되니,구현해야할 메소드도 없어, 사용하기도 편리합니다. 참고로 아래링크에서 Serializable에 대해서 볼 수 있습니다.(Activity로 Object넘겨줄 때엔 Serializable) 그런데, 한가지 방법이 더 있습니다.바로 Parcelable이라는 interface를 사용하는 것입니다.구현하기는 좀더 복잡하기는 하지만,Java에서 재공해주는 Serializable보.. 2017. 3. 13.
안드로이드에서 카톡방식의 ViewPager + Tab 레이아웃 구현 카카오톡 을 사용하시다보면 좌우로 화면을 넘겨서 탭을 이용할 수 있는데요, 예를 들면 친구탭에서 채팅탭으로 이동할때, 상단 탭을 누를수도 있지만, 옆으로 쓰윽 밀어도 되지요? 이런 방식의 레이아웃을 구현하는 것을 정리해보려고 합니다. 1. 구조분석 상단에 3개의 탭메뉴가 있고, 각 탭에 따라서, 3개의 페이지가 있는데요, 이 페이지들은 Fragment로 만들려고 합니다. 만들고자 하는 화면은 아래와 같습니다. 움직임을 보여드릴수는 없지만, 카톡처럼 좌우로 스와이핑되면서 탭간이동이 되는 화면입니다;;;. 2. 필요한 라이브러리 설정 오늘도 예외없이 라이브러리 설정 먼저하고 갑니다~. dependency에서 design이라고 검색하시면 맨위에 나오는 라이브러리를 선택해주세요. 이번에 사용하는 라이브러리는 d.. 2017. 3. 13.
AlarmManager 로 구현하는 안드로이드 알람 안드로이드에서 앱을 만들다 보면,Alarm기능을 구현해야 할 때가 있습니다. 본격적인 알람앱이 아니어도,유저가 원하는 시간에 어떠한 노티가 와야 하는경우가 있기 때문인데요. 오늘은 Alarm기능에 대해서 정리해 보겠습니다. 1. Alarm 기능의 구현 안드로이드에서 Alarm은, 안드로이드 시스템의 AlarmManager에게 알람기능을 부탁하여 실행되도록 하는데요.이 AlarmManager에게 어떤 receiver를 호출할지에 대한 intent를 가지고 있는 PendingIntent와 얼마나 delay 된 후 실행시킬지를 알려주어서 set을 해줍니다. Alarm이 set되면, 정해진 시간에 AlarmManager가 receiver에게 broadcast 해주고,receiver가 이를 받아서 service를.. 2017. 3. 13.
CompileSdkVersion, MinSdkVersion, TargetSdkVersion 그리고 BuildToolsVersion 안드로이드 작업을 하면서, 최신버전으로 라이브러리로 업데이트하는일이 많은데요. 특히나, 구글에서 제공해주는 design, recyclerview, cardview 같은 라이브러리를 추가해보면, 계속 최신버전으로 업데이트 되는데요. 그런데, 이상하게 build.gradle에 최신버전으로 위의 라이브러리들을 추가하면, 아래이미지와 같이 빨간줄이 있는 경우가 있습니다. 뭐가 문제지? 하고 줄이 간곳에 마우스를 올려보니 아래와 같이 나왔습니다. compileSdkVersion이 23인데, 제가 25버전의 라이브러리를 추가했다 이거죠. "음. 그럼, compileSdkVersion을 25로 올리면 되겠구나" 하는 생각이 들긴 하는데요. 그렇다면, compileSdkVersion이라고 하는 건 뭘까요? 1. com.. 2017. 3. 12.
ConstraintLayout 의 매력에 빠져보겠습니다 어느 순간부터 안드로이드 스튜디오를 업데이트 하고나서,프로젝트를 생성한 뒤에, MainActivity.xml을 열어보면,Root ViewGroup이 아래와 같이 ConstraintLayout으로 되어 있는 걸 볼 수 있습니다. 도대체 얼마나 매력적이기에, 구글에서 이것을 디폴트로 쓰라고 추천하는지 궁금해지는데요.오늘은 이 ConstraintLayout에 대해서 정리해 보면서, 그 매력에 빠져보겠습니다~. 1. ConstraintLayout Constraint의 한글뜻은 제한, 통제라는 뜻인데요.모순적이지만, 구글에서는 블로그에서 ViewGroup을 아주 파워풀하고, 유연한 툴이라고 소개하고 있습니다. 구체적으로는, 복잡한 UI들을 안에 겹겹히 쌓지 않고도,위치나 사이즈를 유연하게 적용시킬 수 있는 Vie.. 2017. 3. 10.
Realm 에서 Thread Error 없이 데이터 조회후 삭제하기 오늘은 Android Realm에서 데이터를 조회한 후에,그 데이터를 삭제하는 것에 대해서 정리를 해보고자 합니다.생각해보면 그리 어렵지 않은 일인데요. 하지만 Realm에서는 Thread에 대해서 민감하기 때문에,이 쉬운일이 조금 어렵게 보일때가 있습니다. 1. Realm과 Thread Realm은 어느 Thread에서나 조회 또는 write할 수 있는데요.하지만, 서로 다른 Thread에서 데이터를 수정할 수 있다는 애기는 아닙니다. 즉, A쓰레드에서 write하고, B쓰레드에서 Read할 수 있지만,A쓰레드에서 바로 데이터를 수정해서 Update할 수는 없습니다.그리고, B쓰레드에서 A쓰레드로 바로 데이터를 넘겨줄수도 없습니다.쓰레드에 대해, 조금은 까다로운 편입니다. 다른 thread에서 데이터를.. 2017. 3. 8.
Android 운영체제의 기본구조 및 Architecture 오늘은 안드로이드 운영체제의 기본구조에 대해서 정리해 보겠습니다.안드로이드를 공부하게 될때, 보통 초반에 스윽 보고 지나가게 되는 부분인데요.하나하나 짚어가면서 보겠습니다. 1. 안드로이드 기본구조 안드로이드의 기본구조에 대해서는 아래표를 보면 이해하기가 쉬운데요.크게 5개의 큰 레이어로 분리할 수 있습니다. 아래의 표와 같이, 가장 하단부터, Linux Kernel, Libraries, Android Runtime, Application FrameWork, Applications 으로 구성되어 있습니다. (출처 = Smieh - Anatomy Physiology of an Android) 1-1. Linux Kernel 레이어 안드로이드는 가장 하단에 Linux Kernel이 있기 때문에, 리눅스 기반.. 2017. 3. 8.
Java Wrapper 클래스 를 정리해 보자 안드로이드 프로그래밍을 하다보면,Wrapper Class를 사용하게 되는 경우가 많이 있습니다.HashMap이나 Generic, 혹은 ArrayList를 사용할 때 인데요. 오늘은 Java의 WrapperClass에 대해서 정리해보겠습니다. 1. Wrapper Class Java 개발을 할 때, 무심코 사용하던 Wrapper Class란 말은,사실은 기본형(Primitive) 타입을 Wrap해서 쓰는, Primitive Wrapper Class를 지칭한다고 볼 수 있습니다. 실제로 Wrapper Class는, Primitive Wrapper Class뿐만이 아니라, 어떤 Class를 Wrap(포장)해서 사용하는 Class를 가르키는 것 입니다.하지만, 이 글에서도, Wrapper Class를,자바의 Pr.. 2017. 3. 7.
CollapsingToolbarLayout 으로 구현한 닫혀지는 ActionBar 안드로이드 Material Design이 나오면서, 앱 디자인에 종종 등장하는 UI가 있는데요. 바로, CollapsingToolbarLayout입니다. 이 Layout은, 아래와 같이 닫혔다, 열렸다 하는 안드로이드의 ActionBar를 가르키는데요. 오늘은 이UI를 구현하는 것에 대해서, 정리해보겠습니다. 1. Design Library 준비 MaterialDesign의 대표적 레이아웃인 CollapsingToolbarLayout을 사용하기 위해서는, Google이 제공하는 DesignLibrary가 필요합니다. dependencies에 아래와 같이 추가하면 됩니다. 직접 build.gradle에 추가하고자 한다면, compile 'com.android.support:design:25.2.0' 를 추.. 2017. 3. 5.
안드로이드 ActionBar에 Menu 를 구현해보자 안드로이드 우측 상단에 보면 아이콘과 점3개로 되어있는 아이콘이 있는 UI를 본적이 있으실 텐데요.오늘은 이것에 대해서 정리해 보도록 하겠습니다. 실제로 만들 화면은 아래와 같은데요.우측 상단의 디스켓 아이콘과 점점점으로 된 아이콘이 저희가 만들어 볼 Action Button들이구요, 그 중 점점점으로 된것이 overflow menu Button입니다. 그럼 하나하나 구현해보도록 하겠습니다. 1. 메뉴 XML파일 생성 먼저, 해야할 일은 xml을 만들고, menu화면을 정의하는 일인데요.res폴더에서 new> android resource file을 선택해줍니다. menu_sample 로 file name을 정하고, ResourceType을 menu로 선택해줍니다. 2. XML파일 생성 XML파일에서 각.. 2017. 3. 2.
Realm 에서 Migration 하는 방법 RealmDB를 사용해서 안드로이드 앱을 만들다보면, Migration을 해야하는 경우가 생기는데요.특히 배포가 된 앱이라면 더욱 그렇습니다.오늘은 이 Migration작업에 대해서 정리해보도록 하겠습니다. 1. 데이터모델 Class 오늘 Migraion을 해볼 데이터 모델클래스는,그동안 많이 사용해 왔던 Student Class입니다.여기서 int타입의 StudentNumber를 추가해 보겠습니다. 아래와 같이 String인 StudentNumber를 넣어서 추가하였습니다. studentNumber는 필수요소여서, Required attribute을 추가하였습니다. 2. Migration Class생성 그러면, Migration을 정의할 Class를 생성해 보겠습니다.Migraion 클래스를 생성하면서.. 2017. 3. 1.
Realm Module 을 이용해서 멀티 Schema 활용하기 안드로이드 앱을 만들다보면, 미리 준비해 놓고Local DB파일에서, data를 읽어와서 유저에게 보여주는 경우도 있고,유저가 Favorite 해놓은 데이터들을 DB로 저장해야 하는 경우도 있습니다. 그렇다면, 미리 정의해서 앱내로 가져온 LocalDB파일의 Schema와유저의 Favorite정보를 저장하는 Schema두개가 생길수가 있는데요.특히나, LocalDB파일의 데이터가 업데이트를 통해서 다운로드해야 되는 경우라면, 특히 건드리지 않는 것이 좋겠지요. 이럴때, Realm에서는 각각 다른 Module을 사용해서,각각의 Schema를 만들고 수정할 수 있는데요.오늘은 그것에 관해서 정리해보겠습니다. 1. Realm Module 정의하기 Realm 모듈에 대해서 특별하게 기술하지 않는다면,defaul.. 2017. 2. 25.
RxAndroid :: Subscription 을 Unsubscribe 해서 Memory Leak을 막자 RxAndroid를 사용할 때 주의해야 할 부분 중에 하나는,적절한 시점에 unsubscribe해주지 않으면 메모리 leak으로 연결될수도 있다는 점인데요.오늘은 Subscription을 unsubcribe()하는 방법에 대해서 정리해 보도록 하겠습니다. 참고로 RxAndroid에 대한 기본적인 사항들은,아래링크에서 먼저 읽어주세요~.>>> RxAndroid 이해하기 Part1 RxAndroid의 Map 과 FlatMap 메소드를 알아보자 2017. 2. 22.
Android 에서 동적으로 View 추가하기 #LayoutInflater 안드로이드 앱을 만들다 보면, 동적으로 View를 추가해야 할 경우가 생기는 데요. 오늘은, 이럴 때 어떻게 해야하는지 정리해 보겠습니다. 1. LayoutInflater layout을 생성하는 것은 inflate한다고 하는데요. 참고로 inflate의 의미를 사전에서 찾아보면, 부풀리다라는 의미인데요. View를 정의한 XML이나 Java파일대로 View를 inflate한다고 생각하면 될 것 같습니다. inflate는 getLayoutInflater()를 이용해서 현재 context와 폰화면에 맞는, LayoutInflater객체를 생성해서 사용해야 하는데요. 아래와 같이 layoutInflater객체를 얻어옵니다. 이제 inflate()메소드로 view를 inflate해줘야 하는데요, 먼저 view로.. 2017. 2. 21.