본문 바로가기
Flutter/Package

Flutter WorkManager 패키지 사용법: 백그라운드 작업을 간편하게 처리하는 방법

by Maccrey Coding 2025. 1. 27.
반응형

Flutter에서 백그라운드 작업 처리하기

Flutter는 모바일 앱 개발을 빠르고 효율적으로 할 수 있는 훌륭한 프레임워크입니다.

그러나 많은 앱에서 중요한 기능 중 하나는 바로 백그라운드 작업입니다.

예를 들어, 앱이 백그라운드에서 데이터를 동기화하거나 알림을 보내거나 일정한 시간 간격으로 작업을 처리해야 할 때가 많습니다.

이러한 작업들을 처리하기 위해서는 Flutter에서 제공하는 여러 가지 방법을 사용할 수 있는데, 그 중에서 WorkManager 패키지가 매우 유용합니다.

 

WorkManager는 Flutter 앱에서 백그라운드 작업을 효율적으로 관리하고 실행할 수 있도록 도와주는 패키지입니다.

오늘은 WorkManager를 Flutter 앱에 통합하고 사용하는 방법을 단계별로 정리해보겠습니다.

Flutter에서 WorkManager 사용하기

1. WorkManager 패키지 설치

Flutter 프로젝트에서 WorkManager를 사용하려면 먼저 패키지를 설치해야 합니다. pubspec.yaml 파일에 WorkManager 의존성을 추가합니다.

dependencies:
  flutter:
    sdk: flutter
  workmanager: ^0.4.0  # 최신 버전을 확인해 사용하세요.

이후, 터미널에서 flutter pub get을 실행하여 패키지를 설치합니다.

 

2. Android 설정

WorkManager는 Android와 iOS에서 모두 작동하지만, Android에서 좀 더 강력한 백그라운드 작업을 지원합니다.

Flutter에서 WorkManager를 사용하려면 Android 프로젝트 설정도 필요합니다.

 

Android 설정

  • android/app/src/main/AndroidManifest.xml 파일에 아래와 같은 설정을 추가해야 합니다.
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
  • android/build.gradle 파일에서 minSdkVersion이 23 이상이어야 합니다.
android {
    compileSdkVersion 33
    defaultConfig {
        minSdkVersion 23  // 최소 SDK 버전을 23으로 설정
    }
}

3. WorkManager 초기화

WorkManager를 사용하기 전에 앱을 초기화해야 합니다. 보통 앱의 시작 부분인 main.dart 파일에서 초기화합니다.

import 'package:flutter/material.dart';
import 'package:workmanager/workmanager.dart';

void callbackDispatcher() {
  Workmanager().executeTask((task, inputData) {
    print("백그라운드 작업 실행됨!");
    return Future.value(true);
  });
}

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  Workmanager().initialize(callbackDispatcher);
  runApp(MyApp());
}

callbackDispatcher 함수는 WorkManager가 백그라운드 작업을 처리할 때 호출되는 콜백 함수입니다.

 

4. 백그라운드 작업 등록

이제 실제로 백그라운드 작업을 등록해보겠습니다. 예를 들어, 특정 간격으로 데이터를 동기화하는 작업을 설정할 수 있습니다.

import 'package:workmanager/workmanager.dart';

void simpleTask() {
  Workmanager().registerOneTimeTask(
    'simple_task',  // 작업 이름
    'simple_task_name',  // 작업 실행할 함수 이름
    initialDelay: Duration(seconds: 10),  // 최초 실행 대기 시간
    inputData: <String, dynamic>{'key': 'value'},  // 입력 데이터
  );
}

위의 코드에서는 registerOneTimeTask를 사용하여 단일 작업을 등록합니다.

initialDelay는 작업이 처음 실행되기까지의 대기 시간을 설정합니다.

 

5. 주기적인 작업 등록

백그라운드에서 주기적인 작업을 등록하고 싶다면 registerPeriodicTask를 사용합니다.

예를 들어, 15분마다 작업을 실행하도록 설정할 수 있습니다.

void periodicTask() {
  Workmanager().registerPeriodicTask(
    'periodic_task',  // 작업 이름
    'periodic_task_name',  // 작업 실행할 함수 이름
    frequency: Duration(minutes: 15),  // 15분마다 실행
    inputData: <String, dynamic>{'key': 'value'},  // 입력 데이터
  );
}

주기적인 작업은 최소 15분 간격으로만 설정할 수 있으므로, 그 점을 염두에 두고 사용해야 합니다.

 

6. 작업 취소

등록된 작업을 취소하려면 cancel 메서드를 사용하면 됩니다.

void cancelTask() {
  Workmanager().cancelById('simple_task');
}

특정 작업을 id로 취소할 수 있습니다. 또는 모든 작업을 한 번에 취소하려면 cancelAll 메서드를 사용합니다.

void cancelAllTasks() {
  Workmanager().cancelAll();
}

 

7. 작업 상태 확인

등록한 작업의 상태를 확인할 수도 있습니다.

예를 들어, 특정 작업이 실행되었는지 확인하려면 다음과 같이 할 수 있습니다.

void checkTaskStatus() async {
  final state = await Workmanager().getTaskState('simple_task');
  print("작업 상태: $state");
}

WorkManager를 통한 효율적인 백그라운드 작업 관리

Flutter에서 WorkManager를 사용하면 앱이 백그라운드에서 데이터를 처리하거나, 정기적으로 동기화 작업을 할 수 있어 매우 유용합니다.

이번 블로그에서는 WorkManager 패키지를 설치하고 설정하는 기본적인 방법을 소개했습니다.

이러한 백그라운드 작업 처리 기능은 앱의 사용자 경험을 향상시키고, 데이터 동기화와 같은 기능을 자동화하는 데 매우 유효합니다.

 

추후 앱에 더 복잡한 백그라운드 작업을 추가하려면 WorkManager의 다양한 기능을 활용하여 더욱 효율적으로 작업을 처리할 수 있습니다.

Flutter를 활용한 앱 개발에서 백그라운드 작업을 다루는 방법을 잘 익혀두면, 앱의 성능과 안정성을 더욱 강화할 수 있습니다.

구독!! 공감과 댓글,

광고 클릭은 저에게 큰 힘이 됩니다.

 

Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

 

 

반응형