[flutter] 플러터 앱의 백그라운드 프로세싱과 프리즈 문제의 관계

플러터(Flutter)는 크로스 플랫폼 모바일 앱을 개발하기 위한 운영체제(Operating System) 관점에서 새로운 관점을 제시한 기술입니다. 플러터 엔진은 프레임워크 내부에서 스레딩과 백그라운드 프로세싱을 처리하며, 이는 사용자 인터페이스(UI)와 관련된 작업 외에도 백그라운드에서 데이터를 처리하거나 외부 서비스와 통신하는 등의 작업에 사용됩니다.

백그라운드 프로세싱과 프리즈 문제

백그라운드 프로세싱은 사용자의 주요 상호작용(UI 작업 등)과 별도로 수행되어야 하는 작업을 가리킵니다. 플러터 앱에서 백그라운드 작업이 너무 많거나 복잡하면 UI가 멈추거나 끊어질 수 있으며, 이를 “프리즈”라고 합니다.

백그라운드 프로세싱을 사용하면 위에 나열된 문제와 관련하여 플러터 앱에 영향을 줄 수 있습니다. 따라서 개발자는 백그라운드 프로세싱을 최적화하여 프리즈 문제를 해결해야 합니다.

백그라운드 프로세싱 최적화 방법

백그라운드 프로세싱의 최적화를 위해서는 다음과 같은 방법을 고려할 수 있습니다:

  1. 이벤트 루프(Event Loop) 사용: 백그라운드 프로세싱을 위한 이벤트 루프를 적절히 활용하여 작업을 분산시킬 수 있습니다. ```dart import ‘dart:async’;

void main() { // … Future.microtask(() { // Perform background processing here }); // … }


2. **동기 작업 지양**: 백그라운드 작업을 동기적으로 처리하면 UI 스레드가 차단될 수 있으므로, 비동기적인 처리 방식을 사용해야 합니다.
```dart
import 'dart:async';

void main() {
  // ...
  Future<void> _processInBackground() async {
    await Future.delayed(const Duration(seconds: 2));
    // Perform background processing here
  }
  _processInBackground();
  // ...
}
  1. 작업 일시 중단: 사용자와의 상호작용이 필요한 시점에는 백그라운드 작업을 일시 중단하고 나중에 재개하는 방식을 고려해야 합니다.

참고 자료: