[Kotlin, Android Studio] 삽질 방지 오류 해결 방법 모음
2022. 3. 14. 16:15
Develop/Kotlin
socket.io-client를 이용해서 소켓 클라이언트 기능을 구현할때, 네트워크 설정이 정상임에도 connect()가 동작하지 않는 경우가 있다. 또는 직접 만든 백엔드 서버와 통신시 데이터 전송이나 수신이 안되는 경우. http를 이용하는 경우. manifest의 application태그 안에 android:usesCleartextTraffic="true"를 추가해주면 된다. 안드로이드 에뮬레이터에서 localhost를 접근하고 싶을 때. 127.0.0.1가 아닌 10.0.0.2로 접근해야한다. 커스텀 위젯을 만들 때 radius가 있는 레이아웃을 원하는 경우, radius라는 xml을 만들어서 background로 적용하게되는데 이때 resources.getDrawable이 deprecated가 ..
[Kotlin Coroutines] 코루틴 완전 정복 #1 개요, 코루틴의 특징
2021. 11. 26. 22:36
Develop/Kotlin
Coroutines(코루틴)은 코틀린의 강력한 기능중의 하나로 많은 앱들에서 사용되고 있는 핵심 기술중 하나다. 얼마나 멋진 기능이길래 많은 사랑을 받고 있는지 한번 깊게 알아보자. 🤷♂️ 왜 이름이 코루틴일까? 나 또한 그랬지만 종종 코틀린의 '코' 자를 따서 코루틴인줄 착각하는 경우가 있다. 스펠링을 보면 알겠지만 'Ko'가 아닌 'Co'다. 흔히 협동 모드를 'Co-op'이라고 하듯 협동, 협업의 의미인 'Co'를 사용한다. 직역하면 협동하는 루틴들인데, 아직은 와닿지 않으니 조금씩 알아가보자. 여담으로 코루틴은 1958년 멜빈 콘웨이가 용어를 만들었고 어셈블리 프로그래밍에 적용했다고 한다. (위키백과) (굉장히 오래된 개념이다..) 공식문서에 소개된 코루틴의 특징들에 대해 알아보자. 🐱🏍 가볍..
[Kotlin] 안드로이드 개발자 기술 면접 정리
2021. 11. 14. 18:44
Develop/Kotlin
Array와 List의 차이 Array의 경우 고전적인 의미의 배열이며, 고정된 사이즈의 연속된 메모리 공간에 할당된다. 따라서 인덱스를 통해 값을 변경하는 것이 가능하며(mutable), 사이즈를 변경하는 것이 불가능 하다. List의 경우 크게 List와 MutableList가 있는데, ArrayList또는 LinkedList의 구현체다. Default로는 ArrayList의 구현체를 따른다. 이름에서도 볼 수 있듯이 List는 Immutable이며 MutableList는 Mutable이다. 성능이 중요시 되는 부분을 제외하고는 List를 쓰는것이 바람직 하다. 참고 : https://stackoverflow.com/a/36263748 Context 란? Context는 Application의 글로벌..
Kotlin 공식문서 둘러보기 #1 코틀린의 장점, 기본 문법
2021. 9. 6. 15:36
Develop/Kotlin
Android 개발에 있어 Kotlin의 장점 코드가 짧으며 가독성이 좋다 다른 사람들이 이해하기 쉽도록 코드를 작성할 때 시간이 단축됩니다. 2011년 Kotlin이 공개된 이후 언어자체와 생태계가 함께 지속적으로 개발되고있다 예를들어 안드로이드 스튜디오가 있습니다. Android Jetpack과 다른 라이브러리들을 지원한다 coroutines, extension functions, lambdas. named parameters 등을 지원합니다 Java와 호환이 된다. 따라서 기존 어플리케이션을 모두 Kotlin으로 바꿀 필요가 없습니다 multiplatform 개발이 가능하다. Kotlin을 이용해서 안드로이드 뿐만아니라 IOS개발, backend, web 어플리케이션을 제작할 수 있습니다 안전한 코..
[안드로이드 개발자 가이드] 앱 기본 요소
2021. 8. 23. 15:07
Develop/Kotlin
안드로이드 개발자 가이드는 Android Developers의 문서들을 보고 이해한 내용을 바탕으로 작성한 글입니다. 원문: https://developer.android.com/guide/components/fundamentals?hl=ko 들어가며 Android 앱의 모든 구성요소가 포함된 압축파일로 앱 설치시 사용됩니다. 각각의 앱은 샌드박스화 되어있는데, 상세사항은 다음과 같습니다. Android의 시스템은 Linux 멀티유저 시스템과 같고 각각의 앱은 하나의 유저로 볼 수 있습니다. 시스템은 각각의 앱에 고유한 Linux ID를 부여하고, 앱에 포함된 모든 파일은 해당 ID의 권한을 가진 유저만 액세스가 가능합니다. 각 프로세스는 자체적인 VM이 있고, 각 앱은 서로 격리된 상태로 실행됩니다. ..
[번역] LiveData를 이용한 snakbar, 네비게이션 등 이벤트 처리
2021. 8. 2. 14:24
Develop/Kotlin
의역 및 오역이 있을 수 있습니다. 원본 글: https://medium.com/androiddevelopers/livedata-with-snackbar-navigation-and-other-events-the-singleliveevent-case-ac2622673150 서론 View(Activity 또는 Fragment)와 ViewModel이 데이터를 주고받기 위한 방식으로 LiveData를 주로 이용합니다. View에서 LiveData를 subscribe하여 LiveData에 변화가 일어나면 반응합니다. 이런 방식은 화면에 지속적으로 표시되는 데이터들에서는 잘 동작합니다. 하지만 Snackbar 메세지나 네비게이션 이벤트, dialog 표시 등과 같이 한번만 발생되는 이벤트들도 있습니다. 이러한 이벤..