본문 바로가기
안드로이드 자바

[Android][JAVA] WorkerManager 사용해서 백그라운드 작업하기

by teamnova 2023. 5. 6.
728x90

안녕하세요. 오늘은 WokerManager 사용해서 백그라운드 작업을  한번 해보겠습니다.

먼저 build.gradle(:app)에 의존성 추가를 하겠습니다.

implementation "androidx.work:work-runtime-ktx:2.7.0"

그리고 나서 Woker 클래스를 생성해 줍니다. 저는 PrintWorker로 설정하겠습니다.

PrintWorker.java

public class PrintWorker extends Worker {

    public PrintWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
        super(context, workerParams);
    }

    @NonNull
    @Override
    public Result doWork() {
        Log.d("TAG", "Hello World");
        return Result.success();
    }

}

이제 메인액티비티 클래스에서 실행시키겠습니다.

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        PeriodicWorkRequest workRequest = new PeriodicWorkRequest.Builder(
                PrintWorker.class, 15, TimeUnit.MINUTES)
                .build();

        WorkManager.getInstance(this).enqueue(workRequest);
    }

}

WorkerRequest는 15분 주기로 반복시키는 것이 최소 단위로 그 이하로 설정할 경우 런타임 예외가 발생하고 반복되지 않습니다.