본문 바로가기

android

[Android] Robolectric 사용 중인지 체크 val isRoboUnitTest: Boolean = "robolectric" == Build.FINGERPRINT 이렇게 만들어서 사용하면 된다!! 라고만 하고 싶지만.. 테스트 코드에 이건 Robolectric을 사용한다고 명시를 해줘야 한다. @RunWith(RobolectricTestRunner::class) class SomeTest { @Test fun test() { ... } } 그럼 체크가 가능해 진다. 혹시나 하나 더 참고 사항으로 아래와 같은 Socket 에러를 보시는 분... java.io.IOException: socket not created at android.net.LocalSocketImpl.bind(LocalSocketImpl.java:305) at android.net... 더보기
[번역] Android Architecture Components 사용시 5가지 일반적인 실수 출처 : https://proandroiddev.com/5-common-mistakes-when-using-architecture-components-403e9899f4cb 5 common mistakes when using Architecture Components Subtle oversights with more or less serious consequences - even if you’re not making these mistakes it should be worth keeping them in… proandroiddev.com 다소 심각한 결과를 초래하는 미묘한 실수 - 심지어 이러한 실수를 하지 않더라도 향후 어떤 문제가 발생 향후 발생할 가능성이 있기 때문에 기억할만한 가치가 있다. 글 목.. 더보기
[Android][DI] ViewModel onCleared 함수가 호출 되지 않을 때 Android Architecture Component 라이브러리에서 제공하는 ViewModel 클래스에서 onCleared라는 함수를 override 할 수 있습니다. 이 함수에서 ViewModel이 라이프사이클에서 종료가 되었을 때 호출 되어 불필요한 메모리를 초기화 시킵니다. (CompositeDisposable를 정의하여 onCleared 함수에서 clear를 시키기도 하죠.) 그런데 이상하게 ViewModel을 생성한 Activity나 Fragment를 종료 시켰는데 onCleared 함수가 호출이 되지 않을 때가 있다. 그럼 아래 두 가지를 테스트 해봐라. 1. Android Support 라이브러리 버전 확인 Android Support 라이브러리 버전이 27.1.0 이하일 경우 onClea.. 더보기
[Android Weekly][#344] 효율적인 LiveData와 ViewModel 테스팅 원본 : https://android.jlelse.eu/effective-livedata-and-viewmodel-testing-17f25069fcd4 Architecture Components 와 그것들을 실행할 방법에 관해 써놓은 글이 많이 있고, 테스트 능력을 향상 시켜줄 혜택 중 하나를 가지고 있다. 자 그럼, 실제로 어떻게 향상시키지? 한번 살펴 보자. Architecture Components는 Google I/O 2017에서 소개되어 졌고, 그것들은 Android 개발 세계에서 뚜렷한 향상을 의미 했다. 수 년을 걸쳐 익힌 최고의 연습들은 대부분의 공통된 문제들이 바뀌어졌고, 탄탄한 가이드(opinionated guide)를 나오게 했다. View와 ViewModel은 LiveData를 통하.. 더보기
[Android] 현재 Android 최신 버전 상태 (2016.10.25) ## 버전 상태gradle : 2.2.1google-services : 3.0.0 maven-plugin : 1.5gradle-plugin : 0.13.0 compile sdk : 25build tool : 25.0.0 google support library : 25.0.0play service : 9.8.0 ## 최상위 build.gradlebuildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.2.1' classpath 'com.google.gms:google-services:3.0.0' // NOTE: Do not place your application dependencie.. 더보기
[Android] Intent.FLAG_ACTIVITY_NO_HISTORY Activity에 여러 기능을 가진 Flag 가 있죠.이 중에서 제가 말하고자 Flag는 제목에 써있듯이 FLAG_ACTIVITY_NO_HISTORY 입니다. 다 아실꺼라 생각 합니다. 그래도 혹시 저와 같이 고민 하는 사람이 있을 꺼 해서 소스 공유 할려구요 ㅎ 1. 메인 화면이 실행됨.2. A화면이 실행됨.3. B화면이 실행됨.4. A화면이 종료 되면서, C화면 실행 (B화면이 보이는 상황)5. C화면을 종료 하면 B화면이 나오지 않음. 테스트를 해본 결과, C화면이 실행 되지 않으면 B화면이 종료 되지 않습니다.즉! 상황1) 메인 -> A -> B 에서 A가 종료결과1) 메인 -> B 상황2) 메인 -> A -> B 에서 A가 종료되면서 C 실행결과2) 메인 -> C 상황 2에선 B가 자동 제거 되.. 더보기
[Android] TextView가 Ellipis 상태인지 체크 하는 방법 TextView에 singleLine이나 maxLines를 통해서 라인 제한을 주고,ellipsize 설정을 통하여 '...' 으로 표현을 합니다. 그럼, 현재 ellipsize 상태인지 아닌지 알 수 있는 방법이 있을 까요? public boolean isEllipsis(TextView textView) { // 1이 나온다는 것은 글씨가 줄여졌다는 것이다. if (textView.getLayout() != null) { return textView.getLayout().getEllipsisCount(textView.getLineCount()-1) > 0; } return false; } 상태를 파악하기 위해서 getLayout 이 null 이 아니어야 합니다.getLayout 에서 Ellipsis 상.. 더보기
[Android] Viewpager swipe disable ViewPager에 Touch로 인한 Page 이동을 막고자 할 때 아래와 같이 Custom한 ViewPager를 사용 하세요. package com.namuon.ringq.widget.viewpager; import android.content.Context; import android.support.v4.view.MotionEventCompat; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.view.MotionEvent; public class SwipeViewPager extends ViewPager { private boolean enabled; public SwipeViewPag.. 더보기