루틴프로그래밍에서 루틴이란 프로그램의 흐름을 추상적으로 일컫는 말입니다.메인루틴과 서브루틴으로 나눌 수 있습니다.main 함수에 의해 수행되는 프로그램이 있다고 가정하면,메인 루틴 : main 함수에 의해 수행되는 프로그램의 흐름서브 루틴 : main 함수 안에서 실행되는 개별 함수들에 의해 수행되어야 하는 흐름 코루틴 실행의 지연과 재개를 허용함으로써, 비선점적 멀티태스킹을 위한 서브 루틴을 일반화한 컴퓨터 프로그램 구성요소 안드로이드에서는 AsyncTask를 이용해서 손쉽게 비동기 프로그래밍을 구현했었지만 구글은 컨택스트 누수, 콜백 누락, 구성 변경 시 충돌 과 같은 여러가지 문제로 API 30 이상부터 deprecate 시키고 코루틴을 사용하도록 권장하고 있습니다.코루틴과 스레드구글에서는 Asy..
전체 글
ANR에 관한 안드로이드 공식문서를 보고 정리해 보았습니다.https://developer.android.com/topic/performance/vitals/anr?hl=ko ANR | App quality | Android Developers이 페이지는 Cloud Translation API를 통해 번역되었습니다. ANR 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Android 앱의 UI 스레드가 너무 오랫동안 차단되면 'ANRdeveloper.android.com ANR 개발을 하다 보면 앱이 비정상종료될 때 이런 메시지가 나오는 것을 많이 보셨을 텐데요.Android에서는 앱의 UI 스레드가 너무 오랫동안 차단되면 위와 같은 Application Not ..
메모리 구조프로그램이 실행되면 메모리에 로드 되게 됩니다. 이때 프로그램에서 사용되는 변수들을 저장할 메모리도 필요한데, 이때 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공하고 있습니다. 프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간은 총 4가지(코드 영역,데이터 영역, 힙 영역, 스택 영역) 이 있습니다. 스택(Stack) 영역메모리의 스택(stack) 영역은 함수의 호출과 관계되는 지역변수와 매개변수가 저장되는 영역입니다.스택영역은 함수의 호출화 함께 할당되며, 함수의 호출이 완료되면 소멸합니다.스택영역은 푸시 동작으로 데이터를 저장하고, 팝 동작으로 데이터를 인출합니다.스택 구조는 후입선출(LIFO, Last-In Frist-Out) 방식에 따라 동작하므로, 가장 늦..
이번에 저는 시리얼 통신을 이용해서 안드로이드 앱에서 모터나 센서를 제어해 보는 예제를 만들어보았습니다. 과거에 파이썬으로 라즈베리파이를 이용해서 대학교 졸업작품을 만들었던 기억과 지금 안드로이드 개발을 공부하고 있으니까 두개를 합쳐서 예제를 한번 만들어볼까? 라는 생각이 들었습니다.진짜로 해보고 싶었던 건 블루투스 또는 와이파이를 통해서 센서나 모터를 제어하고 싶었지만, 시간관계상 급하게 인터넷에서 아두이노를 주문한 나머지 관련된 모듈이 포함되지 않은 채로 주문할 수밖에 없었습니다.그래서 결국 USB를 이용하였습니다. 시리얼 통신이란?데이터를 한번에 1비트씩 순차적으로 전송하는 방식의 통신입니다.일반적으로 컴퓨터와 외부장치 간의 데이터 전송에 사용되는데 병렬통신과 달리 하나의 데이터 라인을 사용하여 데..
이전 글에서 액티비티 생명주기를 알아보았습니다.각 버튼으로 프래그먼트를 프레임레이아웃에 프래그먼트를 띄우는 예제를 통해서 프래그먼트의 생명주기에 대해 알아보려고 합니다.2024.11.08 - [안드로이드] - [Android] Activity Lifecycle [Android] Activity Lifecycle안드로이드를 공부할 때 가장 먼저 공부하게 되는 것 중에 하나가 생명주기입니다.안드로이드 4대 컴포넌트 중 하나인 액티비티의 생명주기에 관해서 적어보려고 합니다.차근차근 알아보겠습goharry.tistory.com 프래그먼트 생명주기(Fragment Lifecycle)프래그먼트 생명주기의 종류는 액티비티의 생명주기 종류보다 많습니다.간단하게 알아보겠습니다.onAttach()프래그먼트가 액티비티..
안드로이드를 공부할 때 가장 먼저 공부하게 되는 것 중에 하나가 생명주기입니다. 안드로이드 4대 컴포넌트 중 하나인 액티비티의 생명주기에 관해서 적어보려고 합니다. 차근차근 알아보겠습니다.1. 액티비티 생명주기(Activity Lifecycle)액티비티 생명주기에 대한 내용이 안드로이드 공식문서에 다음과 같이 적혀 있습니다.사용자가 앱을 탐색하고, 앱에서 나가고, 앱으로 다시 돌아가면, 앱의 Activity 인스턴스는 생명 주기 안에서 서로 다른 상태를 통해 전환됩니다. Activity 클래스는 여러 콜백을 제공합니다.https://developer.android.com/guide/components/activities/activity-lifecycle?hl=ko 활동 수명 주기 | Android Dev..
문제0과 1로 이루어진 어떤 문자열 x에 대한 이진 변환을 다음과 같이 정의합니다.x의 모든 0을 제거합니다.x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 바꿉니다.예를 들어, x = "0111010"이라면, x에 이진 변환을 가하면 x = "0111010" -> "1111" -> "100" 이 됩니다.0과 1로 이루어진 문자열 s가 매개변수로 주어집니다. s가 "1"이 될 때까지 계속해서 s에 이진 변환을 가했을 때, 이진 변환의 횟수와 변환 과정에서 제거된 모든 0의 개수를 각각 배열에 담아 return 하도록 solution 함수를 완성해주세요. 제한사항s의 길이는 1 이상 150,000 이하입니다.s에는 '1'이 최소 하나 이상 포함되어 있습니다.입출력 예 문제 해결문자가 1..
문제JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.제한 조건s는 길이 1 이상 200 이하인 문자열입니다.s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.숫자는 단어의 첫 문자로만 나옵니다.숫자로만 이루어진 단어는 없습니다.공백문자가 연속해서 나올 수 있습니다.입출력 예 문제해결단어 전체를 소문자로 변경 후 공백기준으로 분리합니다.공백이 아닌 단어 맨 앞글자는 대문자로 바꿔줍니다. 더보기더보기class Solution { ..
문제길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다.배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱한 값을 누적하여 더합니다. 이때 최종적으로 누적된 값이 최소가 되도록 만드는 것이 목표입니다. (단, 각 배열에서 k번째 숫자를 뽑았다면 다음에 k번째 숫자는 다시 뽑을 수 없습니다.)예를 들어 A = [1, 4, 2] , B = [5, 4, 4] 라면A에서 첫번째 숫자인 1, B에서 첫번째 숫자인 5를 뽑아 곱하여 더합니다. (누적된 값 : 0 + 5(1x5) = 5)A에서 두번째 숫자인 4, B에서 세번째 숫자인 4를 뽑아 곱하여 더합니다. (누적된 값 : 5 + 16(4x4) = 21)A에서 세번째..
문제괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어"()()" 또는 "(())()"는 올바른 괄호입니다.")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.제한사항문자열 s의 길이 : 100,000 이하의 자연수문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다. 문제해결'스택'이라는 알고리즘으로 해결 할 수 있다.count 변수를 이용하여 '('와 ')'의 개수를 조정합니다.'('가 나오면 count를 증가..