목록Android (37)
라떼는말이야
https://mangbaam.github.io/kotlin/2022/07/06/coroutine-basic-dive-1.html CoroutineContext and CoroutineScope in Kotlin and Android ⭐ mangbaam.github.io 코루틴 컨텍스트와 코루틴 스코프에 대해 공부하고 기록해보았습니다^^ 많은 관심 부탁드려요
프로그래머스에서 진행한 [2022 와디즈 개발자 채용 챌린지]에 참가했다. 코딩 테스트만 봐오다가 코딩 챌린지는 처음 접해봤다. 베이스 코드를 주고 여러 요구 사항에 맞춰 앱 개발하는 과제형 챌린지였다. (공개된) 챌린지 정보 자세한 내용을 밝힐 순 없지만 기본적으로 네트워크 통신과 간단한 뷰 작성, 이벤트 처리 등을 요구했다. 네트워크 통신에서는 Retrofit이 허용됐다. (사전에 프로그래머스에 공개된 정보이다) 오후 1시부터 5시까지 4시간 동안 진행되었는데 정말 시간 가는 줄 모르고 열심히 임했다. 챌린지에 임하기 전 와디즈 안드로이드 채용 공고를 확인했는데 여기서 챌린지에 대한 힌트를 얻을 수 있었다. 그 동안 집구석에서 혼자 안드로이드 개발 공부하며 연습했던 부분들을 최대한 반영하려고 노력했지..
프로젝트의 로그인 부분을 DataBinding으로 변경하는 과정에서 예상치 못한 에러를 만났다. 구현 중이던 상황 구현하던 부분은 로그인 버튼을 누르면 뷰모델의 login() 함수를 호출하는 것이고, login() 함수는 로그인 화면의 아이디, 패스워드 EditText에서 텍스트를 가져와 파라미터로 넘겨주려고 한다. 에러를 만난 부분 하지만 아래와 같은 오류가 발생하면서 빌드에 실패한다. if getId is called on an expression, it should have an id: userId.text 분명 개발자 가이드에서도 .text로 접근하라고 되어있었다. 문제 해결 해결한 방법은 생각보다 간단했다. text를 getText()로 변경하면 빌드에 성공한다. 개발자 가이드에서 .text와 ..
코틀린에는 Scope 함수라고 하는 개념이 있다. run, let, apply, also, with 키워드가 있으며 각각 비슷한 역할을 하기 때문에 서로 혼용하여 사용할 수도 있지만 분명히 다른 동작을 수행한다. 처음엔 헷갈리더라도 정확한 사용법과 용도를 안다면 좀 더 적재적소에 활용할 함수를 선택할 수 있을 것이다. https://kotlinlang.org/docs/scope-functions.html Scope functions | Kotlin kotlinlang.org 나 역시 완벽하게 익히지 못했기 때문에 작성하는 내용이 틀릴 수도 있고, 적절하지 않은 예제일 수도 있다. 정확한 내용을 확인하기 위해서는 위의 공식 문서를 확인하길 바란다. 위 사진은 공식 문서에 첨부된 표이다. 각 스코프 함수에서..
java.lang.RuntimeException: Unable to invoke no-args constructor for interface retrofit2.http.Url. Registering an InstanceCreator with Gson for this type may fix this problem. 레트로핏 사용을 하는데 위와 같은 오류가 발생했다. 서버에서 내려주는 데이터 { "id": 4, "title": "세상에서 제일 맛집!! 여기로 와요!!", "price": "18,000원", "lat": 35.219413, "lng": 126.853902, "imgUrl": "https://i.picsum.photos/id/131/200/200.jpg?hmac=q40x2oH1ZEkSm4ghNQ..
앱 개발에서 가장 일반적인 패턴 중 하나는 LoginActivity에서 로그인 후 MainActivity로 전환되는 것이다. 사용자가 LoginActivity에서 올바른 자격 증명을 입력하면 앱은 LoginActivity를 종료하고 MainActivity를 시작한다. 일반적으로 사용자가 이후에 다시 앱을 실행시켰을 때 로그인을 다시 할 필요 없게 하는 것을 원할 것이다. 이를 실현하기 위해서 몇 가지 접근법이 있는데, 가장 쉬운 것은 사용자가 앱을 사용할 때마다 매번 로그인을 강제하는 것이다. 하지만 이 방법은 유저 경험(UX)에 아주 끔찍한 방법이다. 일반적으로 사용자가 로그인하면 몇 종류의 토큰을 반환하고, 그것을 앱의 생명주기 외부 어딘가에 저장하면 된다. 일단 토큰을 받았다면, 토큰의 기간이 만료..
안드로이드 앱에서 배경 색을 바꿀 수 있다는 것을 아시나요? 안드로이드 앱에서 기본 배경색을 지정할 수 있다. 만약 그 방법을 모르거나 바꿀 수 있는지 조차 몰랐다면 내가 만드는 앱의 메인 배경 색이 파란색일 때 모든 화면의 background 속성을 파란색으로 지정했을 것이다. 앱의 한 부분에 여러 번 색을 덧칠하면 필요 없는 작업을 하는 것이고, 앱의 성능이 안 좋아질 수 있다. 그래서 앱의 대부분 화면이 파란색이라면 아예 앱의 배경 색을 파란색으로 만들면 모든 화면마다 배경 색을 지정하지 않아도 돼서 편하고, 성능 상으로도 더 좋고... 내가 말이 긴 이유는 방법이 너무 간단해서 이다.. ㅋㅋ (바람잡이 중) 배경 색을 바꾸는 것은 그림을 그리는 도화지 색 자체를 바꾸는 것처럼 생각하면 좋다. 배경..
프로젝트에서 회원가입 화면을 만들면서 아이디, 비밀번호 등의 입력을 제한해야 하는 작업이 필요했다. 대표적으로 비밀번호인데, 비밀번호 규칙은 회사마다 다르지만 각자의 기준을 가지고 있다. 네이버의 비밀번호 규칙 구글의 비밀번호 규칙 KISA(한국 인터넷 진흥원)의 비밀번호 권고 사항 사진에 링크 걸어놨으니 클릭하면 더 자세한 내용 확인할 수 있음 구상 우선 내가 적용할 비밀번호의 규칙을 정해야 한다. 나는 숫자, 영어 알파벳(대/소문자 상관없이), 특수문자 하나 이상씩을 포함하는 규칙을 세웠다. 특수문자는 ! @ # $ % ^ + - = 로 제한했다. 비밀번호 길이는 8자 이상, 24자 이하로 정했다. > UI 적으로는 사용자가 입력을 시작했을 때 입력할 수 없는 문자는 입력 창에 입력되지 않도록 하면서..