전체 글75 [안드로이드] Coroutine의 Dispatchers.IO 와 Dispatchers.Default의 차이 Dispatcher는 코루틴에서 특정 스레드를 실행할 수 있도록 해주는 기능을 합니다. (RxJava의 subscribeOn()과 동일한 기능) 네트워크 입출력이 필요한 작업에사용할 수 있는 스레드가 IO와 Default 두 가지 입니다. 그렇다면 두 개의 차이점이 무엇인지 알아보면, Dispatchers.IO : 필요에 따라 추가적으로 스레드를 더 생성하거나 줄일 수 있으며 최대 64개까지 생성가능하다. Dispatchers.Default : Default 사용 시 JVM의 공유 스레드풀을 사용하고 동시 작업 가능한 최대 갯수는 CPU의 코어 수와 같다. (ex: CPU가 4코어이면 최대 4개의 병렬작업이 가능) 따라서, 이 둘의 용도가 다르다 IO의 경우 네트워크 대기시간이 네트워크 입출력 작업에 사.. 2022. 4. 12. [백준 2839번] 설탕 배달 문제구분: 그리디 알고리즘 리뷰 : 처음엔 5kg로 나누고 3kg나눠서 나머지가 0이 아니면 -1 일 것이라고 단순히 생각했지만, 6kg을 배달한다고 했을때의 예외가 존재했다(3kg만으로 나눌 수 있음). while문에서 5kg로 나눠 0으로 나누어 떨어지지않으면 3kg를 한번씩 빼주면서 루프를 돌려서 문제를 풀었다. 2022. 4. 11. [백준 11720번] 숫자의 합 문제구분: 문자열 리뷰 : 오랜만에 알고리즘 공부를 시작했는데, 코틀린으로 백준에서 문제를 푸는건 처음이다. 그런데 너무 낯설고 자바랑 다른 부분이 있어서 아주 쉬운 문제부터 시작했다.. 근데도 몇번이나 컴파일 오류 발생해서 자괴감이 들었다고한다..; 2022. 4. 11. [안드로이드] 머티리얼 디자인 - Menu(DropDown) 이번엔 DropDown에 대해 알아보겠습니다~ 이번 예제에서는 두 종류의 DropDown을 사용해볼 예정입니다. 프로젝트 전체 layout 입니다. 먼저, res > menu 디렉토리에 xml 파일을 생성하고, 그 menu xml을 inflate하는 방식입니다. 그리고 다음 코드를 작성합니다. showDropDownMenu(v: View)의 파라미터 v는 해당 드랍다운 메뉴가 발생하는 뷰의 입니다. 이 예제에서는 버튼 클릭 시 드랍다운 메뉴가 버튼 아래로 나타나게 됩니다. menu를 inflate한 후에 아이콘의 margin을 설정해주는 코드를 작성했습니다.(공식 홈페이지 참고했습니다.) 각 메뉴마다 이벤트를 처리할 수 있습니다. 드랍다운 메뉴가 dismiss 됐을때의 이벤트를 처리할 수 있습니다. 버튼.. 2022. 4. 10. [안드로이드] Coroutine Scope / Thread vs Corountine CoroutineScope - 코루틴의 범위, 코루틴 블록을 묶음으로 제어할수 있는 단위 - 액티비티의 생명주기에 따라 동작 GlobalScope - 앱의 생명주기와 함께 동작해서 실행 도중에 별로도 생명주기를 관리해 줄 필요가 없다. 시작부터 종료까지 장기간 실행되는 코루틴 작업에 적합 - 싱글톤으로 동작 - CorountineScope를 상속받음 - cancel 처리가 복잡 ViewModelScope - Jetpack 아키텍처의 viewModel 컴포넌트를 사용시 ViewModel 인스턴스에서 사용하기 위해 제공되는 scope이다. viewModelScope로 실행되는 코루틴은 ViewModel 인스턴스가 소멸될 때 자동으로 취소됨 ViewModelScope LifecycleScope는 각 Lifec.. 2022. 4. 8. [안드로이드] DiffUtil의 동일성과 동등성에 대한 이해 안드로이드의 RecyclerView를 사용할 때, DiffUtil을 사용하여 성능을 개선할 수 있는데, 그 원리에 대해 설명하고자 포스팅합니다. 가장 처음 RecyclerView를 구현하기 위해서 Adapter를 구현하고 RecyclerView와 연결지어줍니다. 그리고 보통 데이터를 화면에 뿌려주기 위해서 adapter.notifyDataSetChanged()를 호출합니다. 하지만, 리스트 중에 아이템 하나만 변경이 되었을 때에도 notifyDataSetChanged()를 호출하여 리스트를 업데이트 하는 방식은 퍼포먼스를 저하시킵니다. 이를 방지 하기 위해서 notifyItemChange(position), notifyItemRemoved(position), notifyItemInserted(positi.. 2022. 4. 8. 이전 1 2 3 4 5 6 7 ··· 13 다음