컴퓨터공부 362

Android Room 사용시 필요한 libraries

아래 설정을 안했더니 이상한 에러가 나면서 컴파일 자체가 안된다.. 구글신에게 물어 봐서 알게 됨 build.gradle 최상단에 apply plugin: "kotlin-kapt" dependencies에는 dependencies{ ... implementation "androidx.room:room-runtime:2.2.5" kapt "android.arch.persistence.room:compiler:1.1.1" implementation "android.arch.persistence.room:rxjava2:2.2.5" // room 하고 rxjava를 같이 쓰려면 필요 } 출처 : stackoverflow.com/questions/46665621/android-room-persistent-appd..

Android Room annotation 정리(어노테이션)

안드로이드 앱에서 SQLite 데이터베이스를 쉽고 편리하게 사용할 수 있도록 하는 기능이다. SQLite 위에 만든 구글의 ORM(Object-relational mapping)이다. 룸을 사용하면 앱의 단일 정보 소스로 제공되는 캐시를 통해 인터넷 연결 여부와 관계없이 앱에 있는 주요 정보의 일관된 사본을 볼 수 있다. 룸의 구성요소는 Database, Entity, DAO 이다. Database // 데이터 베이스에서 사용하는 엔티티와 버전을 지정합니다. @Database(entities = [User::class], version = 1) abstract class UserDatabase : RoomDatabase() { // 데이터베이스와 연결할 데이터 접근 객체를 정의합니다. abstract f..

Volatile in Kotlin

@Volatile var tmpEndedAt: Long? = null 이렇게 사용하면 됩니다. Volatile이 뭔지 모르신다면,,, 무시 하셔도 됩니다.-0-;; ..... 아니면.. 아래 참고를 보세요. Volatile 참고 : blog.naver.com/PostView.nhn?blogId=classic2u&logNo=50003118713&parentCategoryNo=&categoryNo=15&viewDate=&isShowPopularPosts=false&from=postView m.blog.naver.com/PostView.nhn?blogId=kyed203&logNo=220053808209&proxyReferer=https:%2F%2Fwww.google.com%2F 출처 : stackoverflo..

OkHttp의 Network Interceptor

아래와 같이 Retrofit builder에 interceptor를 넣어서 디버깅하면 편리 하다. 아래 주석을 한 것처럼 원하는 데이터만 출력 하는 방법이 있는가 하면, HttpLoggingInterceptor 객체를 생성하여 level만 정해 주고 그냥 쓰는 방법이 있다. HttpLoggingInterceptor로 왠만한 정보를 볼 수 있다. interface GithubApi { @GET fun getUserList(@Url url: String) : Observable } object GithubApiProvider { fun provideGithubApi(): GithubApi { return Retrofit.Builder() .baseUrl(Constant.BASE_URL) .client(pro..

Kotlin 코드를 Java 코드로 보는 방법

안드로이드에서 코틀린으로 작성한 코드는 JVM으로 자바 바이트 코드(Java Bytecode)로 변환되어 동작한다고 한다. 안드로이드 스튜디오에서 코틀린(Kotlin)으로 작성한 코드를 자바(Java) 코드 형태로 보고 싶을 경우 1. Tools > Kotlin > Show Kotlin Bytecode 메뉴로 접근 2. 또는 cmd + shift + A (Mac) / ctrl + shift + A (Windows) 단축키 후 > Kotlin Bytecode 3. 위 과정을 거치게 되면 오른쪽에 Kotlin Bytecode 사이드 바가 생기는데 변환하고자 하는 파일에서 Decompile 버튼을 클릭한다. 4. 버튼을 클릭하게 되면 자바로 변환된 코드가 생성되어 코드를 확인할 수 있다. 위 같은 과정으로 자..

Kotlin : object keyword vs companion object keyword, and 익명 클래스

object 키워드 - 싱글턴(singletion; 인스턴스가 하나만 있는 클래스)을 선언하는 키워드 object MySingleton{ val prop = "나는 MySingleton의 속성이다." fun method() = "나는 MySingleton의 메소드다." } Companion object 키워드 - 클래스내의 객체 클래스(static이 아니다.... 하지만 비슷한 효과가 난다.) - 축약형이 가능 class MyClass2{ companion object{ val prop = "나는 Companion object의 속성이다." fun method() = "나는 Companion object의 메소드다." } } fun main(args: Array) { println(MyClass2.Com..

Java Generic, 자바 제네릭

더 자세한 것은 출처를 참고 하시면 됩니다. 아래는 제가 이해하기에 도움 되는 수준으로 정리 한 것입니다. 제네릭 클래스 public class 클래스 { ... } // 가장 기본적인 형태의 제네릭 클래스 class GenericClass{ private T t; T getValue(){ // 제네릭 class 내 에서는 제네릭 타입에 대한 리턴 정의가 편하다. return t; } } // Generic class를 상속 받으면 제네릭 타입도 같이 받아야 한다. class extendedClass extends GenericClass{ } // Generic class를 상속받고, 제네릭 타입 K 도 받는 형태 class extendedClass2 extends GenericClass{ private..

rxJava2 vs rxKotlin vs rxAndroid(What is the difference between them?)

결론 부터 말하면, rxJava2, rxKotlin, rxAndroid는 Reactive Extensions(혹은 ReactiveX) 를 확장해 놓은 라이브러리이다. 쉽게 말해, 다 같은 놈이란 것이다. 이름이 여러개인 이유는, 다른 목적으로 생성 되었기 때문이다. 안드로이드에서 Kotlin을 사용해도 rxJava2를 그냥 써도 된다. 아무 이상 없다. 하지만 rxKotlin을 쓰면 보일러 플레이트 같은게 개선 되었다고 한다. 참고로, 안드로이드에서 Kotlin을 사용할 때, RX를 쓰려면 한 줄 implementation "io.reactivex:rxkotlin:2.0.2" rxjava2를 쓰려면 두 줄이 필요하다. implementation 'io.reactivex.rxjava2:rxjava:2.2...