쏭식
Ssongcode;
쏭식
전체 방문자
오늘
어제
  • 분류 전체보기 (106)
    • JAVA (21)
      • Basic (21)
    • Kotlin (14)
      • Basic (14)
    • Android (64)
      • Basic (24)
      • JETPACK (30)
      • Compose (8)
      • 파고들기 (2)
    • Project (4)
    • etc (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 코드업100제
  • Adapter
  • 백준
  • 컴포즈
  • Kotlin
  • 변수
  • 리사이클러뷰
  • 코테
  • ViewModel
  • 코틀린코테
  • Android
  • 기초100제
  • 배열
  • 자료구조
  • 객체지향
  • mvvm
  • 코딩테스트
  • workmanager
  • 메소드
  • 자바
  • 프로젝트회고
  • compose
  • 알고리즘
  • Room
  • 상속
  • 코틀린
  • Jetpack
  • AAC
  • DataBinding
  • livedata

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
쏭식

Ssongcode;

[JETPACK개론] WorkManager(1)
Android/JETPACK

[JETPACK개론] WorkManager(1)

2022. 9. 7. 23:59

WorkManager는 공식문서를 확인해보면 지속적인 작업에 권장되는 솔루션이라고 나온다.

앱이 다시 시작되거나 시스템이 재부팅될 때 작업이 예약된 채로 남아 있으면 그 작업은 유지된다고 설명하고 있다.

이렇게 공식문서만 살펴보면 이해가 잘 안되는 경우가 있다.

 

사용자가 앱을 나가도 오래 걸리는 작업같은 경우에는 앱을 나가버리면 보통 그 작업이 멈춰버린다.

이 때 WorkManager를 사용할 수 있다.

 

이렇기 때문에 지속적인 작업에 권장되는 솔루션이라고 하는 것이다.

또한 WorkManager는 코루틴을 지원하고, 작업 순서 설정이 가능하다.

예를 들어

A, B작업은 첫 번째로 실행되는 두 번째로 실행되는 상관이 없지만

C라는 작업은 꼭 세 번째에 실행되어야 한다고 가정하였을 때 이 때 작업 순서를 정해줄 수 있다.

 

바로 간단한 예시를 통해 WorkManager가 무엇인지 정확히 알아보자.

class SimpleTread : Thread(){
    override fun run(){
        super.run()

        for(i in 1..10){
            Log.d("MainActivty", "$i")
            sleep(1000)
        }
    }
}
SimpleTread().start()

간단한 스레드를 작성해보았다. 실행하였을 때 1..2..3.. 쭉쭉 가다가 앱이 종료되면 다음과 같이 실행이 끊긴다.

그럼 이제 비교를 위해 WorkManager를 생성해보자.

implementation("androidx.work:work-runtime-ktx:2.7.1")
class WorkManagerA(context : Context, workerParameters: WorkerParameters) :
    Worker(context, workerParameters){

    override fun doWork(): Result {

        for(i in 1..10){
            sleep(1000)
            Log.d("WorkManagerA", "$i")
        }

        return Result.success()
    }
}
val workManagerA =  OneTimeWorkRequestBuilder<WorkManagerA>().build()
WorkManager.getInstance(this).enqueue(workManagerA)

위와 같이 gradle파일에 추가를 해준 뒤

WorkManager클래스를 생성해주어 스레드와 똑같이 1..10까지 반복문을 작성한다.

 

그리고 MainAcitivty에서 위와 같이 작성해주어 workManager를 실행한다.

이제 중간에 앱을 중지하고 로그를 확인해보자.

 

위와 같이 두 개의 로그 모두 끊긴 것을 확인할 수 있다.

하지만 일정 시간 뒤에 다시 workManager의 로그만 찍히는 것 또한 확인할 수 있었다.

이렇게 앱이 종료되거나 다시 시작되었을 때 이 작업이 유지되며 실행되고 있다.

이제 앞에서 언급했던 지속적인 작업 이라는 키워드를 이해할 수 있을 것이다.

지속적인 작업에 꼭 필요한 기능이고 다음 글에서 workManager를 다른 것과 합쳐 어떻게 사용할 수 있는지 포스팅할 예정이다!

 

 

GitHub - SsongSik/JetPack_Android_Practice: Android practice using the Jetpack library

Android practice using the Jetpack library. Contribute to SsongSik/JetPack_Android_Practice development by creating an account on GitHub.

github.com

 

저작자표시 (새창열림)

'Android > JETPACK' 카테고리의 다른 글

[JETPACK개론] WorkManager(3) + Chaining, Coroutine  (0) 2022.09.09
[JETPACK개론] WorkManager(2) + Sending, Receiver Data  (0) 2022.09.08
[JETPACK개론] ROOM(3)  (0) 2022.09.05
[JETPACK개론] ROOM(2)  (0) 2022.09.03
[JETPACK개론] ROOM(1)  (0) 2022.09.02
    'Android/JETPACK' 카테고리의 다른 글
    • [JETPACK개론] WorkManager(3) + Chaining, Coroutine
    • [JETPACK개론] WorkManager(2) + Sending, Receiver Data
    • [JETPACK개론] ROOM(3)
    • [JETPACK개론] ROOM(2)
    쏭식
    쏭식

    티스토리툴바