컴퓨터공부 362

@JvmOverloads: constructor 가 해주는 것

@JvmOverloads 어노테이션을 사용하면 여러 개의 constructor를 상속받는 번거로움이 줄어들고, xml inflation 시에도 문제가 발생하지 않는다. constructor를 직접 작성한 버전 class CustomView: View { constructor(context: Context) : super(context) constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) constructor(context: Context, attrs: AttributeSet?, @AttrRes defStyleAttr: Int) : super(context, attrs, defStyleAttr) } @JvmOverloads..

안드로이드 텍스트뷰 속성 (Android TextView Attributes)

이 글은 제가 작성한게 아니라... 제가 나중에 쓰려고 하는 스크랩에 가깝습니다. 더 자세한 건 출처를 참고 하세요~ + TextView 속성의 종류 autoLink TextView를 링크 형태로 사용. autoText 텍스트 입력 시, 자동 오타 수정 기능 사용. breakStrategy TextView의 텍스트 줄넘김 정책 지정. bufferType getText() 함수로 리턴되는 버퍼 타입 지정. capitalize 알파벳 소문자 입력(표시) 시, 대문자로 자동 변환. cursorVisible 텍스트 입력 커서를 보일지 말지 여부 지정. digits TextView에 입력 가능한 문자 제한. drawableBottom 텍스트를 기준으로 아래쪽에 이미지 출력. drawableEnd 텍스트를 기준으로..

String.hashCode()는 같은 값을 리턴합니다. 근데 왜 HashMap에서 쓰나요?

결론 먼저.. String.hashCode()는 중복된 값을 리턴할 수 있습니다. 하지만 HashMap에서 key로 String을 쓰셔도 됩니다. 왜냐면, HashMap은 hashCode(), == and equals() 를 이용해서 값을 저장할 entry lookup 을 선정하기 때문입니다. 즉, hashCode()값이 같아도, == 이나 equals() 함수를 통해서 다른 entry lookup으로 분기 된다는 것입니다. ------------------------------------------------------------------------------------------------------------------------- HashMap의 key를 String으로 쓸 기회가 있어서.. 이..

javac & java 컴파일러 사용법

핵심 먼저..ㅋㅋㅋ Java에서는 packagename과 폴더 트리 구조를 강제 하기에 이것을 맞춰줘야한다. javac로 .class를 만들 수 있다. 예를 들어, package com.company; public class JavaPractice { public static void main(String[] args) { System.out.println("Hello, world"); } } 위 클래스를 이용해서 아래처럼 입력하면 JavaPractice.class 파일이 생성된다. javac JavaPractice.java 이것은 바이트 코드로 여러 디바이스에서 실행할 수 있도록 해주는 이미지이다. 이제 이것을 실행하려면, java 파일을 이용해야 한다. 이 때, 아래 처럼 사용하면 된다. java -..

안드로이드 스튜디오 개발 시 람다 표현식 안 먹힐 때,

한 번도 그런적이 없었는데.. 오늘 갑자기 아래와 비슷하게 람다가 안 먹힌다.. 그럼 아래처럼 compileOptions를 추가해 주거나, android { defaultConfig { ... } compileOptions { targetCompatibility 1.8 sourceCompatibility 1.8 } } Project Structure에서 targetCompatibility, sourceCompatibility 를 Java 8 이상으로 설정하면 됩니다. 둘 중에 하나만 하면 나머지는 자동 반영 됩니다. 출처 : fluorite94.tistory.com/85 breakcoding.tistory.com/196

Pair Class가 없네??

Oracle java sdk에는 선언이 되어 있다는데.. 이 클래스가 없어서.. 굳이 sdk 버전을 바꾸고 싶지 않으면 아래 클래스를 추가 해서 사용하면 됩니다. public class Pair { private final K element0; private final V element1; public static Pair createPair(K element0, V element1) { return new Pair(element0, element1); } public Pair(K element0, V element1) { this.element0 = element0; this.element1 = element1; } public K getElement0() { return element0; } publ..

JVM에서 메모리 릭 정의

정의 : abandoned objects but still accessible(버려진 오브젝트지만 접근이 가능한 경우) 메모리 릭이 자주 발생하는 코드(아래 영상에서 발취함) Static variables Singleton classes that are holding onto your calss Registering yourself with a listener, but forgetting to remove it Any of these inner classes that for some reason may not end up stopping 발취 영상 : Deep Dive into Android Studio Profilers (Android Dev Summit '18) https://youtu.be/LGVb..

Android Profiler 사용법 & JVM에서 메모리 릭 정의

아래 영상들을 순서 대로 보면 어떻게 사용하는지 알게 될 겁니다. 영어를 모르시면 유튜브 자동 번역으로 보세요..(갓튜브..) 매우 간단한 사용법 https://youtu.be/FxDa2td6Ej8 실제 어떻게 사용하는지 예시 프로젝트로 알려줌 https://youtu.be/4Wnu_2meZaI 자세히 알려줌 Deep Dive into Android Studio Profilers (Android Dev Summit '18) https://youtu.be/LGVbpobV-Yg Demystify the data in Android Studio Profilers (Android Dev Summit '19) https://youtu.be/v4kCRZ_O4Lc network profiler 사용법 youtu.be..

매우 간결하고 파워풀한 RxJava 이벤트 버스(Super simple event bus with RxJava and Kotlin)

싱글톤으로 아래를 선언하고, main 처럼 사용하면 됩니다. 장점은 클래스 타입에 따라서 event가 발생하게 되므로 데이터 클래스 관련 처리를 callback처럼 사용할 수 있습니다. 예를 들어, thread1 에서 서버나 db 데이터를 가져 오고 그것을 mainthread로 가져 오려고 할 때, publish()를 사용하면 adapter에 데이터를 가공 후 바로 저장할 수 있습니다. 특히.. 서버나 db에서 데이터를 가져 올 때, 몇 개를 가져 오는지 알 수 없어서 항목을 하나씩 업데이트 해야 할 때 좋을 것 같습니다. import io.reactivex.Observable import io.reactivex.subjects.PublishSubject // 혹은 implementation "io.re..