안드로이드62 [Kotlin] lateinit, by lazy 지연(늦은) 초기화초기화 작업을 극한으로 미루다가 사용자가 필요로 할 때 진행하는 방법클래스 안에 '이 변수를 사용할 것이다'라고 선언만 해두고 나중에 변수를 실제로 사용하는 시점에 값을 입력해주어 사용하는 것null 로 초기화할 수 없고, 객체의 정확한 값을 뒤에 가서야 알 수 있는 경우에 사용한다. lateinitvar 로 선언된 프로퍼티만 사용 가능하다.Non-null 타입만 사용 가능하다.지연 초기화를 위해 사용되는 lateinit 프로퍼티에는 null 값이 할당될 수 없다.프로퍼티에 대한 사용자 정의 getter, setter 를 사용할 수 없다.클래스 생성자에서 사용이 불가능하다.생성자에서는 프로퍼티가 즉시 초기화되어야 한다.초기화 전에는 변수 접근이 불가능하다.원시 타입은 사용이 불가능하다... 2025. 1. 14. [Android] LiveData, Flow LiveDataLifecycle 라이브러리 중 하나로, 안드로이드 공통의 라이프사이클과 관련된 문제를 해결할 수 있게 해 주면서 앱 개발시 보다 더 유지보수하기 쉽게, 테스트하기 쉽게 만들어주는 라이브러리옵저버 패턴을 활용하여 구현되었으며, 관찰 가능한 일반 클래스인 ObservableXXX 클래스와는 달리 LiveData 는 생명주기의 변화를 인식하는 데이터 홀더 클래스이다.즉, Activity, Fragment, Service 등 안드로이드 컴포넌트의 생명 주기 인식을 통해 Active 상태에 있는 컴포넌트에서만 업데이트한다.Activity 와 Fragment 는 LiveData 객체를 안전하게 관찰할 수 있고, 생명 주기가 끝나는 즉시 관찰을 멈추기 때문에 누수를 걱정하지 않아도 된다.LiveDat.. 2024. 12. 22. [CS] 멀티 태스킹(Multi Tasking), 멀티 프로세싱(Multi Processing), 멀티 프로세스(Multi Process), 멀티 스레드(Multi Thread) 단일 프로세스(Single Process)초창기 컴퓨터는 단일 프로세스 시스템으로, 한 번에 하나의 프로그램만이 실행할 수 있어서, 또 다른 프로그램을 실행하고 싶다면 현재 프로그램을 종료해야 했다. 그리고 프로그램 실행 중 *I/O(입출력) 작업이 발생하면 CPU 는 프로세스를 멈추고 대기하게 되어 CPU 사용률이 비효율적으로 낮아지게 된다.I/O(Input/Output) : 프로그래밍에서 파일을 읽고 쓰는 것, 서버 네트워크의 어딘가와 데이터를 주고 받는 것, 마우스, 키보드와 같은 입출력 장치와 데이터를 주거나 받는 것을 의미한다.위 문제를 해결하기 위해 여러개의 프로그램(멀티 프로그래밍)을 메모리에 올려놓고 하나의 CPU 에서 번갈아 가며 동시에 실행시키는 방안을 첨가하였다. 멀티 프로그래밍(Mu.. 2024. 12. 12. [Android] 프로그램(Program), 프로세스(Process), 스레드(Thread) 프로그램 (Program, 정적 프로그램(Static Program))윈도우의 *.exe 파일이나 Mac의 *.dmg 파일과 같은 컴퓨터에서 실행할 수 있는 파일어떤 작업을 하기 위해 실행할 수 있는 파일. 아직 실행하지 않은 상태이기 때문에 정적 프로그램으로도 불린다.파일이 저장 장치에 있지만 메모리에는 올라가 있지 않은 정적인 상태모든 프로그램은 *운영체제가 실행되기 위한 메모리 공간을 할당해 줘야 실행될 수 있다.운영체제(Operating System, OS) : 컴퓨터 시스템의 핵심 소프트웨어로, 컴퓨터 하드웨어와 응용 프로그램 간의 상호작용을 관리하고 제어하는 역할을 한다. 프로세스(Process)운영체제로부터 자원을 할당받은 작업의 단위프로그램을 실행시켜 정적인 프로그램이 동적으로 변하여 프로.. 2024. 12. 11. [Kotlin] Enum class, Sealed class Enum class상수값의 타입 안전성을 보장하며, when 문에서 상수에 정의된 값에 대한 처리를 반드시 하도록 강제한다.상수 값에 대한 특정한 동작이 필요할 때 특정 상수값에 대한 동작을 빼먹는 것을 방지할 수 있다.각 상수는 단 하나의 인스턴스만 가질 수 있다. (싱글톤)상수의 속성값은 정의 후 변경할 수 없다.다른 클래스를 상속할 수 없고, 다른 클래스에게 상속받을 수도 없다. 그러나 interface 를 구현할 수 있다.상수와 연관된 변수를 상수에 저장할 수 있다.서브 클래스를 생성할 수 없다.private 생성자만 갖는다. BEFORE문제점 : state 의 종류가 늘어날 경우, 처리 로직을 빼먹거나 처리되지 말아야 할 상수값(Int)이 포함될 수 있습니다. 또한, Int 값이 상수값이므로 s.. 2024. 12. 10. [Kotlin] 객체 선언(Object Declaration) , 동반 객체(Companion Object) 코틀린 클래스 안에는 정적인 멤버가 없다. 자바 static 키워드를 지원하지 않는다.그 대신 코틀린에서는 패키지 수준의 최상위 함수와 객체 선언을 활용한다.대부분의 경우 최상위 함수를 활용하는 편을 더 권장한다. 그러나 최상위 함수는 특정 클래스의 private 멤버에 접근할 수 없기 때문에, 클래스 내부에 정의된 static 멤버가 다른 클래스 멤버와 상호작용해야 하는 경우에는 적합하지 않다.static 을 최상위 함수로 대체할 수 없는 경우에는 object 를 고려한다. 객체 선언(Object Declaration) : 싱글톤클래스 선언과 그 클래스에 속한 단일 인스턴스의 생성을 동시에 처리해주기 때문에, 싱글톤에 사용하기 적합하다.클래스 전체가 하나의 싱글톤 객체로 선언되고, 처음 사용될 때까지 .. 2024. 12. 9. [Kotlin] 범위 지정 함수(Scope function) Scope function객체의 이름을 사용하지 않고, 객체에 접근이 가능하게 하는 함수특정 객체에 대한 작업을 블록 안에 넣어 실행할 수 있도록 하는 함수 (feat. kotlinworld)FunctionObject referenceReturn valueIs extension functionletitLambda resultYesrunthisLambda resultYesrun-Lambda resultNo: called without the context objectwiththisLambda resultNo: takes the context object as an argumentapplythisObject referenceYesalsoitObject referenceYes it람다식 내부에서 사용되는 암시.. 2024. 12. 9. 이전 1 2 3 4 ··· 9 다음