반응형

분류 전체보기 209

View.GONE과 View.INVISIBLE의 차이

안드로이드 프로그래밍을 할 때 개발자는 View의 Visibility를 설정할 수 있다. 이때 View를 보여주려면 View.VISIBLE, View를 숨기려면 View.GONE 또는 View.INVISIBLE을 쓸 수 있는데 여기서 GONE과 INVISIBLE는 둘 다 View를 숨기지만 차이점이 있다. 먼저, INVISIBLE의 경우는 View를 화면에 그리지만 사용자에게 보여주진 않는다. 즉, View가 실질적으로 그려져 있기 때문에 Layout에 공간을 차지하고 있다. 반면, GONE의 경우 화면에 View를 그리지 않고, 때문에 Layout에 공간을 차지하지도 않는다. 때문에 View들을 일렬로 늘어놓은 뒤, 가장 앞에 있는 View의 Visibility를 INVISIBLE로 설정해도 공간은 차..

SharedPreferences (안드로이드)

SharedPreferences? SharedPreferences는 안드로이드에서 사용할 수 있는 내부 데이터 저장소이다. 개발 진행시 앱의 데이터들을 저장하고, 이들을 관리해야 하는 경우가 있을 수 있는데 이런 경우 중요하거나 많은 양의 데이터는 DB 또는 서버에 저장하는 방법을 사용할 수 있다. 하지만 간단한 데이터, 설정값 등을 DB를 상요해서 저장하기에는 애매하다고 생각할 수 있다. 이런 때를 위해서 안드로이드에선 SharedPreferences를 사용할 수 있다. SharedPreferences는 데이터를 파일로 저장하는데, 해당 파일은 앱 폴더 내부에 저장되기 때문에 앱을 삭제하면 당연하게도 이 데이터는 같이 삭제된다. (파일 형식은 XML) SharedPreferences는 데이터를 Key:..

LayoutInflater(안드로이드)

LayoutInflater? LayoutInfalter는 안드로이드에서 View를 만드는 방법 중 하나로, XML에 정의해둔 Recource들을 View형태로 반환해주는 역할을 한다. 즉, XML에 미리 정의해둔 틀을 실제 메모리에 올려주는 역할을 한다. 우리가 처음 프로젝트를 생성하고 가장 먼저 생기는 MainActivity.java파일에서 onCreate에 자동적으로 추가되는 setContentView(R.layout.activity_main)도 내부에서 LayoutInfalter가 실행되어 View들을 객체화하는 것이다. DataBinding또는 ViewBinding을 사용하면, LayoutInflater를 사용해서 View를 생성하는데, 실제 코드에선 아래와 같이 생성할 수 있다. class Ma..

Annotation(어노테이션)?

Annotation은 사전적으로 주석이라는 의미를 가지고 있다. 안드로이드 개발 중 @Deprected, @Override @Throws 등을 볼 수 있는데, 컴파일러에게 정보를 제공하거나, 실행 시 특정 코드를 자동적으로 생성해주도록 하는 역할을 하고 있다. Annotation은 기본적으로 Kotlin/Android에 내장되어있는 built in annotation, Annotation에 대한 정보를 나타내는 meta annotation, 개발자가 직접 만드는 cumstom annotation이 있다. 이번 글에선 Kotlin에서 사용하는 annotation을 몇 가지 알아보자. 1. @JvmName 2. @JvmStatic 3. @JvmField 4. @Throws 5. @JvmOverloads @J..

핸들러(Handler)

이번 글에서는 Handler에 대해서 알아보도록 하자. 이전에 Thread와 Mutli Thread에 관한 글을 포스팅한 적이 있다. Android에서도 Application의 성능을 위해 Multi Thread를 활용하는데, UI를 업데이트할 때는 반드시 Main Thread에서 작업을 수행한다. Main Thread는 Android에서 UI를 수정할 수 있는 유일한 Thread이기 때문에 UI Thread라고 부르기도 한다. Multi Thread환경에서 모든 Thread가 UI 업데이트 작업을 수행하게 되면 Thread간 교착상태(DeadLock)나 경쟁상태(Race Condition)등의 문제에 빠질 수 있기 때문이다. 여기서 둘에 대해 간단히 설명하자면 경쟁상태는 둘 이상의 Thread에서 하나..

프래그먼트 생명주기(Fragment Lifecycle)

이번 글에서는 Fragment Lifecycle에 대해서 알아보도록 하자. Fragment는 간단하게 Activity+View와 같은 개념이라고 볼 수 있는데, 관련 내용은 아래의 글에 있다. https://angangmoddi.tistory.com/244 액티비티(Activity)와 프래그먼트(Fragment) 이번 글에서는 Activity와 Fragment에 대해서 알아보자. Activity Activity는 Android의 4대 Component중 하나로 사용자에게 실제로 보이며, 사용자와 상호작용하는 화면을 말한다. Activity는 하나 이상의 View또.. angangmoddi.tistory.com 이 Fragment에는 Activity처럼 Lifecycle이 있는데, 일단 그림으로 확인해보도..

배열(Array)과 리스트(List)

이번 글에서는 배열과 리스트, 그리고 둘의 장단점과 이를 통해 둘의 차이를 알아보도록 하자. 배열(Array) 먼저 Array에 대해서 알아보자. Array는 여러 개의 데이터들을 효율적으로 저장/관리/사용하기위해 사용되는 자료형이다. Array는 같은 자료형을 가진 데이터들을 묶어서 저장하는데, 이 각각의 데이터들을 배열 요소(Element)라고한다. 또한 이 각각의 Element들의 위치에 번호를 붙여서 그 위치에 Access하는 구조로 되어있는데, 이 번호를 Index라고 한다. Array의 주요 특징은 메모리상에 데이터들이 `연속적`으로 저장되어있다는 점과 선언시에 크기를 지정해주어야한다는 점이다. 이를 그림으로 표현하면 아래와 같다. 위 그림은 int형의 크기 5개짜리 배열을 선언하였을 때를 표..

Computer Science 2021.06.07

프로세스(Process)와 스레드(Thread)

자 이번 글에서는 Thread와 Process가 뭔지, 둘의 차이는 무엇인지에 대해서 알아보도록 하자. Program? 이를 위해서는 먼저 Program에 대해서 정의하고 가야 할 텐데, 나무위키에 따르면 Program이란 `어떤 문제를 해결하기 위하여 그 처리 방법과 순서를 기술하여 컴퓨터에 주어지는 일련의 명령문 집합체를 뜻한다.` 라고 한다. 우리가 PC에서 사용하는 게임, 메모장, 브라우저 등등이 모두 프로그램이다. 예를 들면 우리 머릿속에는 `밥먹기.` 라는 Program이 내장되어있다. 이 Program에는 `젓가락 들기`, `숟가락 들기`, `밥 뜨기`, `밥 입에 넣기` 등의 명령문들이 존재한다. 즉, 우리라는 사람 자체가 여러 가지 Program을 내장하고 있는 PC라고 할 수 도 있을 ..

Computer Science 2021.06.06

Node.js에서 https통신

이번 글에서는 Node.js에서 https통신을 하는 법에 대해서 알아보자. https통신에 대한 자세한 설명은 생략하도록 하겠다. 일단 시작하기 앞어서 가장 먼저 해야할 일은 서버의 인증서를 생성하는 것이다. 인증서는 유료/무료인 인증서를 발급 사이트에서 발급받아서 사용하는 방법과 서버에서 자체서명해서 사설 인증서를 상요하는 방법이 있다. 유료와 무료의 차이는 무료의 경우 사이트에서 데이터 유출 등의 피해가 생겼을 때 보상을 해주지 않는다는 점이다. 사설 인증서를 사용했을 때는 인증된 인증서가 아니기 때문에 아래와같은 메시지가 뜨게된다. 이 글에서는 openssl을 사용해서 사설 인증서를 생성해서 사용해보도록 하겠다. 먼저 openssl을 다운받아주도록 하는데, 사이트에 가서 쉽게 다운받을 수 있다. ..

서버/NodeJS 2021.05.31

윈도우 10 영상 싱크 밀리는 현상

최근 컴퓨터 사용하면서 유튜브, 인터넷방송 등을 보는데 영상이랑 소리 싱크가 안맞는 현상이 발생함 처음 시작했을 때는 잘 맞는데 몇 분 지나면 조금씩 밀리면서 정신차리고 보면 아예 안맞는다. 해결방법을 몇 가지 찾아보고 글을 쓰는데 글을 읽는 분들은 이 방법으로 해결됐으면 좋겠다. 1. 빠른 시작 해제 시작 -> 전원 옵션 -> 전원 단추 작동 설정으로 이동 종료 설정에서 빠른 시작 켜기가 체크되어있을텐데, 이걸 해제해서 해결된 사람이 많다고 하더라. 본인은 이걸로 해결이 안됐음.. 2. 크롬 하드웨어 가속 해제 크롬에서 설정 -> 고급 -> 시스템으로 가면 가능한 경우 하드웨어 가속이 있다. 이걸 해제했더니 본인은 해결이됐다 3. 윈도우 시스템 파일, Dism 검사 1. 시작 -> cmd를 관리자 권한..

잡다한 정보 2021.05.16
반응형