Kotlin

Kotlin_비밀 다이어리

끄공 2022. 3. 14. 04:40

SharedPreFerences

AlertDialog(팝업)

메인 스레드(UI 스레드)

백그라운드 스레드

핸들러

루퍼

gravity 다중 옵션

NoActionBar

Runnable 인터페이스

runOnUiThread

Custom font

Theme

addTextChangeListner

 


데이터를 저장하는 방법은 2가지가 있습니다.

1) local DB에 저장

2) 앱에 저장

 

2)의 방법 중 하나는 SharedPreferences를 활용하는 것입니다.

 

자세한 설명은 아래의 포스팅을 참고하였습니다.

 

https://enter.tistory.com/273

 

[안드로이드]코틀린 SharedPreFerences를 사용해 데이터 저장하기

SharedPreferences는 인텐트에 값을 전달하듯이 데이터를 키, 값 형태로 저장이 가능합니다. 데이터는 xml 형식으로 된 파일로 저장되며 앱이 종료되도 남아 있습니다. SharedPreferences 사용하기 Sharedprefe

enter.tistory.com

 

edit함수와 put함수를 사용하는데, 저장할 때는 apply 또는 commit을 사용합니다.

 

apply : 비동기적 저장

commit : 동기적 저장, UI 스레드에서 호출하지 않도록 해야 합니다.

 


AlertDialog

 

각 attribute에 대한 설명 및 예시는 아래 포스팅을 참고하였습니다.

 

create 함수를 통해 팝업을 생성하고  show 함수로 화면에 나타냅니다.

setPositiveButton은 확인 버튼입니다.  클릭 후 발생하는 이벤트를 처리하는 리스너를 바로 등록할 수 있습니다.

 

https://juahnpop.tistory.com/220

 

안드로이드 코틀린 : AlertDialog 기본, 목록, 라디오 버튼, 체크 박스, EditText 입력 창

안드로이드 코틀린 : AlertDialog 기본, 목록, 체크박스 목록, 라디오 버튼 목록, 입력(Edit Text) 사용법 이번 포스트는 안드로이드 코틀린 언어를 사용하여 AlertDialog를 활용한 기본 사용 방법, 목록 선

juahnpop.tistory.com

 

 


Custom font

 

res 하위에 font 폴더를 만들어주고 다운받은 폰드를 해당 폴더에 넣어줍니다.

이때 폰트 이름은 대문자를 사용하지 않기 때문에 소문자로 바꿔주어야 합니다.

 

fontFamily를 통해서 원하는 폰트를 사용할 수 있습니다.

 


Theme

기본 component들은 설정된 theme에 따른 color를 적용받습니다.

 

테마를 바꾸는 방법이 있고, 가령 AppCompatButton와 같이 Material Theme의 적용을 받지 않는 component를 쓰는 방법도 있습니다.

 


NoActionBar

 

themes에서 아래와 같이 style을 추가해줍니다.

이후 manifest 파일에서 NoActionBar를 추가해주면 됩니다.

 

 

NoActionBar를 적용할 페이지마다 추가해주어야 합니다.

 


스레드

 

Thread 클래스를 사용하여 새로운 스레드를 생성하고 실행하는 방법은 크게 두 가지가 있습니다.

 

1) Thread 클래스를 상속(extends)한 클래스를 만들고 run() 메서드를 오버라이드(override)한 다음, 클래스 인스턴스를 생성하고 start() 메서드를 호출하는 것

 

2) Runnable 인터페이스를 구현(implements)하는 클래스를 선언하고 run() 메서드를 구현한 다음, 클래스 인스턴스를 Thread 클래스 인스턴스의 생성자에 전달하고 Thread 클래스 인스턴스의 start() 메서드를 호출하는 것

 

handler, looper

 

프로그램은 프로세스이고, 프로세스는 최소 하나의 스레드로 이루어져있습니다.

스레드란, 독립적으로 작업을 처리하는 흐름을 의미합니다.

 

스레드는 '메인 스레드'와 '백그라운드 스레드'로 나뉩니다.

 

메인 스레드는 UI 스레드라고 불리기도 합니다. UI 그리는 작업을 전담하기 때문입니다.

UI는 그려지는 순서가 중요하기 때문에 메인 스레드에서만 작업이 이루어져야 합니다.

 

무거운 작업은 다른 스레드를 통해 처리해야 하고, 필요에 따라 다른 스레드들과 통신할 수 있습니다.

 

스레드 간 통신에는 handler와 looper가 활용됩니다.

 

handler는 메세지 큐에 전달받은 Message를 적재하거나 looper로부터 전달받은 Message를 처리하는 역할을 맡습니다.

 

looper는 메세지 큐에 쌓여있는 Message를 loop()을 통해 적절한 handler로 전달하는 역할을 맡고 있습니다.

 

다른 스레드에서 sendMessage 메서드를 활용해 특정 스레드의 handler로 Message를 보내면 

handler에서는 목적 스레드의 메세지 큐로 해당 Message를 전달합니다.

 

Message는 작업의 작은 단위를 의미하며 Runnable과 Message, 2종류로 나뉩니다.

 

메세지 큐에 쌓은 Message는 looper를 통해서 꺼내지게 됩니다.

 

만약 꺼낸 Message가 Runnable일 경우, 해당 Message는 handler로 보내지지 않고 run 메서드를 통해 처리됩니다.

Message일 경우, 해당 Message는 loop()을 통해 handler로 보내져 handleMessage 메서드로 처리됩니다.

 

    

상세한 내용은 아래 포스팅을 참고하였습니다.

 

https://velog.io/@haero_kim/Android-Looper-Handler-%EA%B8%B0%EC%B4%88-%EA%B0%9C%EB%85%90

 

[Android] Looper & Handler 기초 개념

안드로이드 멀티 쓰레딩 공략하기

velog.io

 

https://recipes4dev.tistory.com/143

 

안드로이드 스레드(Android Thread)

1. 스레드(Thread), 그리고 프로그램(Program)과 프로세스(Process). 스레드(Thread)를 설명하는 이 문장을 읽고 나서, 어떤 용어 또는 개념들이 머리 속에서 확장되나요? 스레드(Thread)라는 단어를 듣는 것

recipes4dev.tistory.com


runOnUiThread()

 

안드로이드에서 제공하는 Message나 Runnable 객체를 UI 스레드에서 동작시키기 원할 경우 사용하는 방법은 4가지가 있습니다.

 

1. Activity.runOnUiThread()

2. Handler.post()

3. View.post()

4. AsyncTask 클래스

 

runOnUiThread() 메서드를 한 문장으로 요약하자면, "Runnable 객체에 구현된 코드를 반드시 메인 스레드에서 실행해야 할 때 사용하는 메서드"입니다.

 

https://recipes4dev.tistory.com/172

 

안드로이드 runOnUiThread() 메서드. (Android runOnUiThread() Method)

1. 안드로이드 핸들러. (Android Handler) 지난 글 [안드로이드 스레드 통신. 핸들러와 Runnable. (Android Thread Communication. Handler and Runnable.)]에서, 핸들러를 통해 Runnable 객체를 보내고, 객체에..

recipes4dev.tistory.com

 

https://rockdrumy.tistory.com/1344

 

[안드로이드] runOnUiThread란? (개념과 사용법)

서론  이전 포스팅 (Thread, Handler, Looper를 이용한 백그라운드 처리) 에서 언급했듯이, 안드로이드 OS 는 UI 자원에 Main Thread와 Sub Thread가 동시 접근하여 동기화 이슈를 발생시키는 것을 방지시키기.

rockdrumy.tistory.com