위 Activity의 Lifecycle 그림은 대부분 알고 있으실 건데요. 하지만 두 Activity 간의 전환 사이에서 발생하는 Lifecycle 순서는 대부분 모르실겁니다. (어떤 면접관분께서는 실제 면접에서 질문했을 때 지금까지 맞춘 사람을 2명 보았다고 하네요.) 한번 맞춰보실까요?? Q1. 현재 A 엑티비티가 포그라운드 상태입니다. 이때 B 액티비티로 전환될 때, 발생하는 LifeCycle 콜백 함수들을 순서대로 나열해보세요. A:onPause() A:onStop() B:onCreate() B:onStart() B:onResume() 위 순서로 푸셨다면 아쉽지만 정답자에 들어가지 못하셨습니다 ㅠ 정답 A:onPause() B:onCreate() B:onStart() B:onResume() A:o..
DTOs(Data Transfer Object)(POJOs/POCOs) 생성하기 우선, kotlin을 사용하면 get set 메소드를 만들어줄 필요가 없습니다. kotlin을 컴파일하면 java에서 자동으로 get set 메소드를 만들어 줍니다. val var에 따라 get set 유무가 달라지며 val은 read-only로 get 함수만 만들어집니다. java에서 Data 접근을 사용하는 방법은 2가지입니다. public class Sample{ String name; String email; public Sample(String name,String email) { this.name = name; this.email = email; } } public 접근 지정자를 사용하여 메소드 없이 변수에 직접 ..
안녕하세요 점냥입니다:) 페이징을 구현하려고 할 때, Jetpack Paging 라이브러리를 쓰지 않는 다면 우리는 리스트의 끝을 도달하는 시점을 확인해야 합니다. recyclerview에서는 함수로 쉽게 제공해주고 있습니다! canScrollVertically(int direction) // 수직 상단 하단 감지 canScrollHorizontally(int direction) //수평 상단 하단 감지 수직 기준 direction 값이 1이면 하단 방향 , -1이면 상단 방향 수평 기준 direction 값이 1이면 오른쪽 방향 , -1이면 왼쪽 방향 위 조건을 사용하여 아래처럼 구현할 수 있습니다. myList.setOnScrollListener(new RecyclerView.OnScrollListe..
let 호출하는 객체의 값을 block에 전달하고 block의 결과값을 반환 fun T.let(block: (T) -> R): R 사용 예 한번쓰고 나서 사용하지 않을 변수가 있을 때 let을 사용하면 불필요한 선언을 방지해준다. val test = Test() setTest(test) //let 사용 Test().let{ setTest(it) } safe-calls 와 결합하여 null check에 사용할 수 있다. var obj:String? = null if(obj != null){ ... } //let 사용 obj가 null이 아닐경우 실행 obj?.let{ ... } apply 함수를 호출하는 객체를 이어지는 block의 리시버를 전달하고, 객체자체를 반환 리시버란? 이어지는 block 내에서 ..
안녕하세요. 점냥입니다 :) 여러분들은 Kotlin 언어를 알고 있나요? 열심히 Android 공부를 하고 있는 여러분이라면 이미 알고 있겠죠 ㅎㅎㅎ Kotlin은 Google I/O 17년도에서 Android 공식 언어로 지정되었습니다!! 아직 Kotlin을 사용하지 않는 다면 서두르세요. 어느새 Android Develop 사이트 전반적인 코드 샘플들과 공식 유투브에서 Kotlin 언어를 기본으로 사용중인 것을 확인할 수 있습니다. 이 포스팅을 읽고 나서 Kotlin 언어에 대한 흥미가 생기셨으면 좋겠습니다. Kotlin 배경 Kotlin 언어가 나오기 전 Android 플랫폼에서는 C++ 언어도 쓰이긴 했지만, 대다수의 개발자들은 Java 언어를 사용해서 개발했습니다. Java 언어는 JVM에서 동..
안녕하세요. 점냥입니다:) 이번 포스팅에서는 Android HTTP 통신 라이브러리인 Retrofit의 기본 사용 방법에 대해서 정리하고자 합니다. Retrofit 퀄리티가 있는 앱을 개발하려면 네트워크 통신은 빠질 수가 없는 기능입니다. 여러분은 어떤 방식으로 네트워크 통신을 구현하시나요? Java에서 기본적으로 제공해주는 HttpURLConnection을 사용하시나요? Google에서 개발한 Volley 라이브러리를 사용하시나요? 저는 Retrofit을 사용하는 것을 추천드립니다. Retrofit이 속도 측면에서 여러 다른 네트워크 라이브러리와 비교했을 때 가장 빠르고 효율적이다라는 자료를 쉽게 찾아보실 수 있습니다. 라이브러리를 사용하는 개발자 입장에서 네트워크 호출 시 처리해주어야 하는 보일러 플..
RuntimeException : try to draw too large ( 바이트 수 ) Bitmap 위 명시되어 있는 Exception은 메모리 캐싱 등의 부가 기능을 제공해 주는 이미지 라이브러리 없이 직접 메모리 용량이 큰 이미지를 View에 로딩 했을 때, 나타나는 문제입니다. 우리가 사용할 수 있는 application의 메모리는 제한되어 있기 때문에 Bitmap Resize를 적용해주는 것이 좋습니다. Bitmap 크기 가져오기 BitmapFactory class는 Bitmap을 생성하기 위해 여러 가지 Decode Method를 제공합니다. decodeByteArray(), decodeFile(),decodeResource(), etc 위 함수를 사용하게 되면 Bitmap의 고유의 크기를 ..