Android/Basic

Android/Basic

[Android] View와 ViewGroup

View 안드로이드 화면 구성 요소로 사용자가 눈으로 보는 모든 것은 View이다. 화면의 기본적인 컴포넌트라고 말할 수 있다. TextView, ImageView, EditText, ... 등 자주 쓰는 모든 UI 관련된 컴포넌트는 View라는 클래스를 상속 받는다. ViewGroup ViewGroup은 n개의 View를 포함할 수 있는 Container이다. ViewGroup은 View만 배치가능하며 ViewGroup도 View를 상속받아 만들어진 클래스이다. 우리가 자주 쓰는 레이아웃이 ViewGroup에 해당한다.

Android/Basic

[Android] DataBinding

DataBinding Android JetPack 라이브러리의 하나의 기능으로 xml파일에 Data를 연결해서 사용할 수 있게 도와준다. Activity에서 findViewById()를 통해서 View를 가져올 필요가 없고, 연결된 데이터가 변할 때 쉽게 View에 변경된 데이터를 반영할 수 있는 장점이 있다. 기본 사용방법 1. build.gradle에 dataBinding 추가 android { ... dataBinding { enabled = true } } 2. 레이아웃 파일 수정 루트를 layout으로 설정 data 태그 추가 // databinding_example.xml 3. 데이터 바인딩 설정 // databinding_main.kt import androidx.appcompat.app.A..

Android/Basic

[Android] LiveData and LiveData observers

사진/내용 LiveData Android JetPack 라이브러리의 하나의 기능으로 Data의 변경을 관찰 할 수 있는 Data Holder 클래스이다. 일반적인 Observable과는 다르게 LiveData는 안드로이드 생명주기(LifeCycle)를 알고 있다. 즉, 액티비티나, 프레그먼트, 서비스 등과 같은 안드로이드 컴포넌트의 생명주기를 인식하며 그에따라 LiveData는 활성상태일때만 데이터를 업데이트 한다. 활성상태란 STARTED 또는 RESUMED를 의미함 LiveData 객체는 Observer 객체와 함께 사용된다. LiveData가 가지고 있는 데이터에 어떠한 변화가 일어날 경우, LiveData는 등록된 Observer 객체에 변화를 알려주고, Observer의 onChanged() 메..

Android/Basic

[Android] 스레드와 서비스의 차이점

스레드 작업을 동시에 실행할 수 있는 클래스이다. Thread를 상속받거나, Runnable을 구현하여 사용할 수 있다. 스레드는 하나의 독립적인 실행 흐름을 가지며, 일반적으로 긴 작업을 수행하는 데 사용한다. 스레드는 수동으로 관리해야 하기 때문에 관리가 어렵고 코드를 읽기 어려워질 수 있다는 단점이 있다. 스레드를 사용하는 경우 중간 또는 많은 양의 데이터가 포함된 네트워크 작업 (업로드 또는 다운로드) 백그라운드에서 실행해야하는 높은 CPU 작업 GUI 스레드와 관련된 CPU 사용량을 제어하려는 모든 작업 서비스 서비스는 백그라운드에서 실행시간이 긴 작업을 수행하며, 사용자 인터페이스를 제공하지 않는 어플리케이션 구성요소이다. UI가 없는 작업이긴 하지만, 작업시간이 너무 길지 않아야 하며, 긴 ..

Android/Basic

[Android] AsyncTask

AsyncTask AsyncTask는 비동기적으로 실행될 필요가 있는 작업을 위해 사용하는 클래스이다. AsyncTask를 상속받아 새로운 클래스를 만들면 그 안에 워커 스레드를 위한 동작 코드와 UI 접근 코드를 한 번에 넣을 수 있다. 예를 들면 웹서버에서 고객 아이디를 가져오는 통신 작업, 즉 백그라운드에서 해야 하는 작업과 가져온 정보를 UI에 업데이트 하는 작업을 동시에 하고 싶다면 AsyncTask 상속 클래스를 만든 후 해당 클래스에 로직을 구현해주면 된다. AsyncTask 장점으로는 비동기적 처리를 하기 쉽고, Handler보다 코드적으로 깔끔하다는 점이 있다. AsyncTask는 핸들러와 달리 무조건 메인 스레드에서 생성하고 실행해야한다. 비동기적 처리의 다른 방식으로는 Thread-H..

Android/Basic

[Android] onStop에서 DB 업데이트를 모두 저장할 수 있을까?

아니요, 몇몇 경우엔 onStop이 호출되지 않을 수 있다. 메모리 부족이나 configuration changes인 경우, onStop에 도달하기 전에 android가 강제로 애플리케이션을 종료할 수 있다. onPause()는 프로그램을 종료되기 전에 반드시 호출되는 유일한 메서드이다. 따라서 DB 테이블 같은 모든 영구적인 데이터들은 onPause()에서 저장해야 한다. (사용자가 back버튼을 누를 경우, onSaveInstanceState가 호출되지 않기 떄문에 모든 DB 테이블을 onSaveInstanceState에 저장할 수 없다.)

Android/Basic

[Android] LayoutInflater

LayoutInflater 우리는 안드로이드에서 Jetpack Compose를 사용하는 것이 아니라면 보통 XML 형태로 레이아웃을 구상한다. 이때, XML 은 마크업 언어에 불과하기 때문에, 이를 기반으로 무언가 동작을 정의하려면 메모리상으로 실체화를 해주어야 한다. LayoutInflater는 레이아웃 XML 파일을 통해, View 객체를 실체화해주는 역할을 한다. 즉, 화면을 구성하는 XML 리소스를 View 객체로 만들어 반환해 준다. Activity에서 onCreate() 메서드에 추가되어 있는 setContentView(리소스. id)가 바로 xml을 객체화시키는 Inflate 동작이다.

Android/Basic

[Android] Context

Context 현재 사용되고 있는 애플리케이션(또는 액티비티)에 대한 포괄적인 정보를 지니고 있는 객체이다. Context가 없으면 액티비티를 시작할 수도, 브로드캐스트를 발생시킬 수도, 서비스를 시작할 수도 없다. 리소스에 접근할 때도 Context를 통해서만 가능하다. Context는 여러 컴포넌트의 상위 클래스이다. Context는 추상 클래스인데 메서드 구현이 거의 없고 상수 정의와 추상 메서드로 이루어진다. Context를 직접 상속한 것은 ContextWrapper이고 ContextWrapper를 상속한 것은 Activity, Service, Application이다. (BroadCastReceiver와 ContentProvider는 Context를 상속한 것이 아님) Context 특징 - ..

Android/Basic

[Android] Annotation

Annotation 주석이라는 의미를 가지고 있지만 주석과 다르게 특정 코드에 달아 어떤 의미를 부여하거나 기능을 주입할 수 있다. 특정 클래스, 변수, 메서드 등에 붙이는 코드로 해당 타깃의 기능을 좀 더 명확하게 해주는 역할을 한다. Annotation 종류 1. Kotlin/Android 에 내장되어있는 built in annotation(ex. @Deprecated, @suppressWarnings) 2. Annotation에 대한 정보를 나타내기 위한 어노테이션인 meta annotation 3. 개발자가 직접 만드는 custom annotation(Using Reflection, Using Code Generation) 더보기 Reference https://blog.gangnamunni.co..

Android/Basic

[Android] Dialog, Toast, Snackbar

앱 이용자에게 정보를 알릴 때, Dialog나 Toast, Snackbar들을 이용할 수 있다. 셋 다 정보를 알려준다는 점은 동일하지만 경우에 따라서 구분 지어 이용할 필요가 있다. Dialog 사용자에게 추가 정보를 입력 또는 결정을 내릴 때 표시하는 작은 화면 방해하는 속성이 있기 때문에 이용자들은 하던 일을 멈추고 Dialog 처리를 해야 한다. 즉, 이용자가 다이얼로그를 처리하기 전까지는 아무것도 할 수 없으므로 다이얼로그 사용에 신중해야 한다. Toast 메시지에 필요한 공간만 차지하는 작은 팝업 진행 중인 작업이 그대로 표시되고 사용자와 상호작용도 유지된다. 토스트 메시지는 일정 시간이 초과되면 자동으로 사라진다. 토스트 메시지는 사용하기 쉽지만 할 수 있는 일이 제한적이기 때문에 간단하고 ..

jeonge
'Android/Basic' 카테고리의 글 목록