안드로이드
-
안드로이드 서비스 (3)안드로이드 2020. 5. 21. 21:09
2020/05/21 - [Android & Kotlin] - 안드로이드 서비스(2) 안드로이드 서비스(2) 2020/05/21 - [Android & Kotlin] - 안드로이드 서비스 안드로이드 서비스 오늘은 서비스에 대해서 알아볼게요. 서비스는 백그라운드 작업을 할 때 사용하는 컴포넌트에요. 지금까지는 우리가 알고 있는 bubble-dev.tistory.com 서비스 관련 마지막 글이 될 것 같네요 하하 이전까지는 스타티드 서비스와 서비스를 LMK로부터 최대한 오래 살아남는 법에 대해서 알아봤어요 이번 글에서는 바운드 서비스에 대해서 알아볼게요 바운드 서비스는 서버/클라이언트적인 성향이 강해요 그래서 사용하기 전에 연결을 맺고, 다 사용했으면 연결을 끊는 과정들이 필요합니다. 예제 < layout/a..
-
안드로이드 서비스(2)안드로이드 2020. 5. 21. 17:22
2020/05/21 - [Android & Kotlin] - 안드로이드 서비스 안드로이드 서비스 오늘은 서비스에 대해서 알아볼게요. 서비스는 백그라운드 작업을 할 때 사용하는 컴포넌트에요. 지금까지는 우리가 알고 있는 스레드로 백그라운드 작업을 했었죠? 액티비티에서 백그라운드 � bubble-dev.tistory.com 이전 글에 이어서 씁니다. 스타티드 서비스를 만들어서 작업스레드를 돌리는것까지 해보았는데요 안타깝게도 서비스도 stopService()가 아닌 시스템 메모리 부족으로 인해 강제 종료될 수 있습니다. 하지만 안드로이드도 마구잡이로 앱을 죽이는것은 아니니 안심하시길 바랍니다! 안드로이드에서 메모리가 부족할 때 다른 앱 프로세스를 죽이는 녀석을 LMK(Low Memory Killer)라고 합니..
-
안드로이드 서비스안드로이드 2020. 5. 21. 14:57
오늘은 서비스에 대해서 알아볼게요. 서비스는 백그라운드 작업을 할 때 사용하는 컴포넌트에요. 지금까지는 우리가 알고 있는 스레드로 백그라운드 작업을 했었죠? 액티비티에서 백그라운드 작업을 하는건 굉장히 위험해요 그 이유를 한 번 보고 서비스에 대해 알아볼게요 서비스 사용의 필요성 package kr.co.sample; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extend..
-
안드로이드 HandlerThread안드로이드 2020. 5. 13. 23:23
오늘은 HandlerThread 에 대해 알아볼거에요 메인스레드에는 Looper와 MessageQueue 가 있어서 메시지들을 처리한다고 배웠어요 안드로이드는 작업스레드도 Looper와 MessageQueue 를 갖게 만들 수 있어요 이를 위한 클래스가 HandlerThread에요 사용법 HandlerThread handlerThread = new HandlerThread("이름"); // Looper 동작 시작 handlerThread.start(); // handlerThread(작업스레드)의 Looper 를 내부적으로 가리키는 핸들러 생성 // 이 핸들러는 post or sendMessage 호출 시 // 메인스레드의 Looper가 아닌 handlerThread의 looper로 메시지를 보내게 된다..
-
안드로이드 CountDownTimer안드로이드 2020. 5. 13. 23:04
오늘은 안드로이드 CountDownTimer 에 대해 알아볼거에요 일정 주기로 어떤 작업을 해야할 때 편하게 쓸 수 있어요. 예를 들면 타이머..? 같은거는 1초 주기로 ++ 하는 작업인거죠 워낙 간단해서 예제 보고 설명할게요 package kr.co.sample; import android.os.Bundle; import android.os.CountDownTimer; import android.view.View; import android.widget.Button; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { Button btn; // 타이머 객체 CountDow..
-
Android AsyncTask안드로이드 2020. 5. 10. 12:20
지난 글에서 안드로이드의 메인 스레드와 작업 스레드의 역할과 통신에 대해서 알아봤다면 이번에는 이를 편하게 해주는 Helper Class 중 하나인 AsyncTask 에 대해서 알아볼거에요 메소드 메인스레드에서 동작하는 메소드 onPreExecute() onProgressUpdate() onCancelled() onPostExecute() 작업스레드에서 동작하는 메소드 doInBackground() onPreExecute() 작업 시작 전에 실행되는 메소드로, 주로 변수 초기화 작업이 이루어집니다. doInBackground() 작업 스레드가 실행시키는 메소드로 Looping 기능이 없어서 자체적으로 무한 루프를 돌게 만들어야 합니다. 리턴되면 작업 스레드도 같이 사라집니다. onProgressUpdat..
-
안드로이드 Looper, Message Queue, Handler안드로이드 2020. 5. 9. 23:31
안드로이드 멀티스레드 프로그래밍에 대해 제대로 이해하려면 Looper 에 대해서 제대로 이해하고 있어야해요 구조 메인스레드 내부적으로 Looper 객체가 있습니다. Looper 는 무한 루프를 돈다고하여 Looper 라는 이름이 붙었는데요 무한 루프를 돌면서 하는 일이 뭘까요? 하는 일 메시지 큐에서 메시지를 꺼내어 읽고, 처리한다. 자 그럼 메시지 큐란게 뭔지 알아야겠죠? 메시지 큐 Looper 내부에 있는 Message Queue 는 메시지를 관리해주는 객체에요 그럼... 메시지는 뭔데...? 메시지 안드로이드에서 하나의 작은 처리 단위라고 생각하시면 돼요. 메시지 큐에 메시지를 넣으려면 Handler 객체를 사용해야 합니다. Handler 안에 Message 객체와 Looper 객체가 있습니다. M..
-
안드로이드 핸들러안드로이드 2020. 5. 9. 20:52
2020/05/09 - [Android & Kotlin] - 안드로이드 Looper, Message Queue 2020/05/09 - [Android & Kotlin] - 안드로이드 스레드 2020/05/09 - [Android & Kotlin] - 안드로이드 멀티스레드 이전 글들을 통해서 메인스레드에서 할 수 없는 일을 알아봤으니 이번에는 메인스레드만 할 수 있는 일에 대해 알아볼게요 안드로이드 단일 스레드 GUI 모델 안드로이드는 화면을 갱신하는 작업을 반드시 메인 스레드에서만 하도록 되어 있어요. 화면이라는 것도 굉장히 중요한 자원 중 하나에요 이런 자원에 대해서 여러 스레드가 동시에 접근하게 된다면 버튼을 그리다가 표를 그리고.. 그러다가 이미지를 그리고.. 그러면 자원 자체가 꼬이기 쉬워요. 그..