분류 전체보기
-
coroutine - 하나의 scope 안에서 collect를 하지 않는 이유Android 2023. 3. 30. 18:45
private fun collectFlow() { viewLifecycleOwner.lifecycleScope.launch { viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) { viewModel.books.collectLatest { if (it.isNotEmpty()) { pplAdapter.submitList(it) } } } } viewLifecycleOwner.lifecycleScope.launch { viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) { viewModel.video.collectLatest { if (it.isNotEmpty()) { vidAdapter.s..
-
ServiceAndroid 2023. 3. 25. 22:13
https://developer.android.com/guide/components/services?hl=ko Service 스타트 서비스, 인텐트 서비스, 바운드 서비스, 백그라운드 서비스, 포어그라운드 서비스, 바인드 서비스 각 서비스는 목적에 따라 크게 다릅니다. 예를 들어, 스타트 서비스는 애플리케이션이 시작될 때 실행되고, 백그라운드 서비스는 사용자가 애플리케이션을 종료한 후에도 계속해서 실행됩니다. 포어그라운드 서비스는 사용자에게 직접적으로 보이는 작업을 수행하는 서비스이며, 인텐트 서비스는 다른 애플리케이션과 데이터를 주고받는데 사용됩니다. 바운드 서비스와 바인드 서비스는 비슷해 보일 수 있지만, 바운드 서비스는 다른 애플리케이션과 상호작용하기 위해 사용되는 서비스이고, 바인드 서비스는 클라..
-
CoroutineAndroid 2023. 3. 24. 18:49
코루틴은 자신이 시작된 스레드를 중단하지 않으면서 비동기적으로 실행되는 코드 블록이다. 스레드 관련 이벤트나 결과를 처리하기 위해 callback 함수를 작성할 필요 없이 순차적으로 코드를 작성할 수있다. 코루틴은 스레드를 유지하면서 코루틴이 스레드에 "할당되는 방법"을 관리한다. -> 실행중인 코루틴이 일시 정지(suspend) 되면, 코틀린 런타임이 해당 코루틴을 저장하고 이 코루틴이 사용하던 스레드를 다른 코루틴에 할당한다. 그리고 저장된 코루틴이 재개(resumed)되면, 스레드 풀의 미사용 스레드로 복원하여 다시 실행한다. (Kotlin runtime은 JVM 상에서 Kotlin 코드를 실행하는 데 필요한 라이브러리 및 실행 환경을 제공합니다. Kotlin runtime은 Kotlin 언어 자체..
-
contextAndroid 2023. 3. 24. 16:36
Context 란? 애플리케이션의 현재 상태를 나타낸다. 액티비티와 어플리케이션의 정보를 얻기 위해 사용할 수 있다. 리소스, 데이터베이스, shared preference 등에 접근하기 위해 사용할 수 있다. 액티비티와 애플리케이션 클래스는 Context 클래스를 확장한 클래스이다. Context의 종류 Application Context 싱글턴 인스턴스이며 액티비티에서 getApplicationContext()를 통해 접근할 수 있습니다. 이 컨텍스트는 애플리케이션의 라이프사이클과 연결되어 있습니다. 현재의 컨텍스트와 분리된 라이프사이클을 가진 컨텍스트가 필요할 때나 액티비티의 범위를 넘어서 컨텍스트를 전달할 떄에 사용합니다. Activity Context ActivityContext는 Activit..
-
Intent + broadcastAndroid 2023. 3. 24. 16:04
https://developer.android.com/guide/components/intents-filters?hl=ko Intent 인텐트가 구성 요소 사이의 통신을 촉진하는 데는 여러 가지 방식이 있지만 기본적인 사용 사례는 크게 세 가지로 나눌 수 있습니다. 액티비티 시작 Activity는 앱 안의 단일 화면을 나타냅니다. Activity의 새 인스턴스를 시작하려면 Intent를 startActivity()로 전달하면 됩니다. Intent는 시작할 액티비티를 설명하고 모든 필수 데이터를 담습니다. 액티비티가 완료되었을 때 결과를 수신하려면, startActivityForResult()를 호출합니다. 액티비티는 해당 결과를 이 액티비티의 onActivityResult() 콜백에서 별도의 Intent..
-
java.lang.IllegalArgumentException: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent. Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE..Android/Errors 2023. 3. 23. 16:51
이 오류는 Android 12부터 새로운 PendingIntent API가 도입되면서 발생하는 문제! 이전 버전에서는 PendingIntent를 생성할 때 getBroadcast(), getService(), getActivity() 함수 중 하나를 사용하면 되었지만, Android 12에서는 getBroadcast() 함수를 사용할 때 FLAG_IMMUTABLE 또는 FLAG_MUTABLE 플래그를 함께 설정해야 한다. FLAG_IMMUTABLE 플래그는 PendingIntent가 불변(immutable)임을 나타내며, 이 플래그를 설정하면 PendingIntent를 수정할 수 없습니다. 이와 달리 FLAG_MUTABLE 플래그는 PendingIntent가 가변(mutable)임을 나타내며, 이 플래그..
-
4대 컴포넌트와 매니페스트Android 2023. 3. 20. 22:40
각 컴포넌트들은 하나의 독립적인 형태로 고유의 기능을 수행하며 Intent를 통해 서로 상호작용을 합니다. 액티비티 액티비티는 사용자와 상호작용하기 위한 진입점입니다. 이것은 사용자 인터페이스를 포함한 화면 하나를 나타냅니다. 예를 들어 이메일 앱이라면 새 이메일 목록을 표시하는 액티비티가 하나 있고, 이메일을 작성하는 액티비티가 또 하나, 그리고 이메일을 읽는 데 쓰는 액티비티가 또 하나 있을 수 있습니다. 여러 액티비티가 함께 작동하여 해당 이메일 앱에서 짜임새 있는 사용자 환경을 구성하는 것은 사실이지만, 각자 서로 독립되어 있습니다. 따라서 이메일 앱에서 허용할 경우 다른 앱이 이런 액티비티 중 하나를 시작할 수 있습니다. 예를 들어 카메라 앱이라면 이메일 앱 안의 액티비티를 시작하여 사용자가 새..
-
WorkManager & AlarmManagerAndroid 2023. 3. 20. 21:44
https://developer.android.com/topic/libraries/architecture/workmanager?hl=ko WorkManager는 지속적인 작업에 권장되는 솔루션입니다. 앱이 다시 시작되거나 시스템이 재부팅될 때 작업이 예약된 채로 남아 있으면 그 작업은 유지됩니다. 대부분의 백그라운드 처리는 지속적인 작업을 통해 가장 잘 처리되므로 WorkManager는 백그라운드 처리에 권장하는 기본 API입니다. WorkManager가 처리하는 지속적인 작업의 유형은 세 가지입니다. 즉시(Immediate): 즉시 시작하고 곧 완료해야 하는 작업입니다. 신속하게 처리될 수 있습니다. (1회만 시행되는 작업) 앱의 스코프 내부에서만 유효한: 코틀린 코루틴, RxJava 앱 외부 스코프에..