[Android APP] feat. Kotlin(71)
-
Android Kotlin : GlobalScope와 CoroutineScope
개요 Coroutine을 처음 사용할 때 아무것도 모르고 GlobalScope를 사용했다가 액티비티를 이동해도 API 호출이 끝나지 않고 백그라운드에서 계속 돌아가는 오류가 생겼었다. 본문 GlobalScope - Application이 종료될 때 까지 존재하는 코루틴이다. - Activity가 종료되어도 존재하는 코루틴이다. - 싱글톤으로 만들어져 있어 잘못 활용하면 앱을 강제종료 시킬 수 있다. job = GlobalScope.launch(Dispatchers.IO) { //코드 내용 job.join() } job.cancel() CoroutineScope - 각각의 Life Cycle을 가지고 있다. - 사용자가 Life Cycle을 용도에 맞게 맞춰줄 수 있다. job = CoroutineScop..
2022.10.22 -
Android Kotlin : MultiPart를 이용해 서버로 파일 보내기
개요 사용자가 무언가 첨부하거나 사진을 선택할 때, 또는 파일을 서버에 업로드 할 경우 우리는 MultyPart/form-data를 사용해 API 서버에 전송하게 된다. 본문 자 우선 첨부 버튼을 클릭 했을 때 화면에 파일 이름을 띄어주고 가입버튼을 눌렀을 때 API서버로 파일을 전송해주는 로직을 짜보자. 1. xml 우선 간단하게 레이아웃을 짜보자 아주아주 간단하게 3개의 파일을 첨부한다고 가정하고 짜본다. Tip. ScrollView를 사용하는데 에러가 뜨면서 실행이 안되는건 ScrollView 안에 여러 위젯이 들어있으면 안되고 하나의 레이아웃으로 묶어줘야한다. 예를 들면 ScrollView 안에 LinearLayout으로 묶어주면 제대로 실행된다. 이런 화면이다. 2. Interface Retro..
2022.09.21 -
Android Kotlin : MVVM, MVP, MVC 디자인 패턴이란 무엇일까?
개요 회사 공고나 개발자 커뮤니티에 보면 디자인 패턴이라는 말이 많이 나온다. 그 중에서도 MVVM과 MVP, MVC 아키텍쳐가 가장 많이 언급되고 사용된다고 하니 공부해보기로 했다. 디자인 패턴이란? 소프트웨어 공학에서 소프트웨어 디자인에 특정 문맥에 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책이다. 소스나 기계 코드로 바로 전환될 수 있는 완성된 디자인은 아니며, 다른 상황에 맞게 사용될 수 있는 문제들을 해결하는데에 쓰이는 서술이나 템플릿이다. - 개발을 하다보면 반복적으로(공통적으로)문제를 해결해야 하는 경우가 생기는데 이럴 때 디자인 패턴을 활용한다고 한다. 장점 : 디자인 패턴을 이해하고 적절하게 사용한다면 유지 보수 및 많은 사람들에게 설득력 있는 코드가 만들어질 수 있다. 본문 1..
2022.09.20 -
Android Kotlin : Coroutine과 Thread
개요 Coroutine과 Thread를 알기 전에 이들은 어디에 사용되는 것일까? 먼저 비동기 처리를 알아야한다. 비동기(Asynchronous : 동시에 일어나지 않는)란? 특정 로직의 실행이 끝날때까지 기다려주지 않고 나머지 코드를 먼저 실행하는 것을 뜻한다. 쉽게 말하면 동시에 여러 작업을 할 수 있도록 도와주는 것이다. Coroutine과 Thread는 이같은 비동기 작업에 사용한다. 안드로이드에서 네트워크의 값을 가져올 때 Main Thread가 아닌 별도의 Thread에서 동작하도록 구현해야한다. 본문 Thread가 뭐고 코루틴이 뭐야? Thread 1. 각 태스크에 해당하는 스택 메모리를 할당받는다. (각 Thread가 독립적인 Stack 메모리 영역을 가진다) 2. 여러 작업을 동시에 수행..
2022.09.15 -
Android Koltin : 비밀번호, 이메일 등 정규식
개요 회원가입같은 페이지에서 비밀번호나 이메일같이 형태가 정해져 있는 값에 대해 사용자에게 올바르게 입력받도록 할 때 정규식을 사용한다. (EX) 비밀번호 : 영문 대문자, 숫자, 특수문자 포함 최소 8글자 본문 1. 비밀번호 정규식 예시 //비밀번호 정규식 fun checkPW():Boolean{ //영문 대문자, 소문자, 숫자, 특수문자 1개 이상 포함 & 최소 8글자 val PwValidation = "^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@\$%^&*-]).{8,}\$" val user_password = binding.userPw.text.toString().trim() //공백제거 val p = Pattern.matches(PwValidation,..
2022.09.12 -
Android Kotlin : 사용자 저장소 권한(Permission) 체크
개요 앱 개발을 할 때 안드로이드 정책등과 같은 이유로 사용자에게 권한을 요청하는 코드를 필수적으로 넣어야한다. 권한을 허용받지 못하면 안드로이드의 기능을 제대로 사용할 수 없다. 앱을 켜보면 위치 권한 요청, 인터넷 권한, 디렉토리 접근권한 등 여러 권한들을 요청하는 앱들을 볼 수 있다. 그냥 무심히 지나치는 동안에도 우리는 권한을 체크하고 있다. 본문 아래는 사용자 스마트폰의 저장소 권한을 요청하는 코드이다. 1. Manifest.xml 먼저 Manifest 파일에 위 권한을 추가한다. (때에 따라 여러 요청들도 추가할 수 있다. 예를 들면 요론것들) 2. Activity //저장소 사용자 권한 요청(안드로이드 정책) private fun requestMultiplePermissions() { Dex..
2022.09.12