CodeBlanks Logo Icon CodeBlanks

Özet - Background task

callbackDispatcher ve PeriodicTask'ı birleştirerek senkron yaparsın.

Senkron akışı

Bir senkron akışı callbackDispatcher ve PeriodicTask'ı birleştirir. Önce Workmanager().initialize ile callback kaydedilir, sonra registerPeriodicTask ile periyodik senkron görevi zamanlanır. Her periyotta callbackDispatcher çağrılır ve task kimliğine göre senkron yapılır.

Workmanager().initialize(callbackDispatcher, isInDebugMode: true);
Workmanager().registerPeriodicTask(
  'sync-task',
  'sync',
  frequency: Duration(minutes: 15),
);

Uygulama Senkron akışı yaz

Üst düzey callbackDispatcher fonksiyonu yaz: String task alsın, 'sync' kimliği için true döndürsün. main içinde önce Workmanager().initialize ile callback kaydet, sonra registerPeriodicTask ile 'sync-task' kimliği, 'sync' callback adı ve 15 dakikalık frequency ile görev zamanla ve 'ok' yazdır.

Başlangıç kodu

main.dart
class Workmanager {
  void initialize(Function dispatcher, {bool isInDebugMode = false}) {}
  void registerPeriodicTask(String uniqueId, String taskName, {required Duration frequency}) {}
}

// callbackDispatcher fonksiyonunu yaz
// String task parametresi alsın
// 'sync' kimliği için true döndürsün

void main() {
  // initialize ile callback kaydet
  // periyodik görevi zamanla
  // 'ok' yazdır
}

Örnek çözüm

main.dart
class Workmanager {
  void initialize(Function dispatcher, {bool isInDebugMode = false}) {}
  void registerPeriodicTask(String uniqueId, String taskName, {required Duration frequency}) {}
}

bool callbackDispatcher(String task) {
  if (task == 'sync') {
    return true;
  }
  return false;
}

void main() {
  Workmanager().initialize(callbackDispatcher, isInDebugMode: true);
  Workmanager().registerPeriodicTask(
    'sync-task',
    'sync',
    frequency: Duration(minutes: 15),
  );
  print('ok');
}

Beklenen çıktı

ok

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Senkron akışında initialize ve registerPeriodicTask hangi sırada çağrılır?

  • Önce initialize, sonra registerPeriodicTask Doğru cevap
  • Sadece initialize yeterlidir
  • Önce registerPeriodicTask, sonra initialize
  • İkisi aynı anda çağrılamaz

Açıklama: Önce initialize ile callbackDispatcher kaydedilmeli, sonra registerPeriodicTask ile görev zamanlanmalı; aksi halde callback bulunamaz.

2 Debug modunu aç

Soru
Workmanager().initialize(callbackDispatcher, ____: true);
Cevap
Workmanager().initialize(callbackDispatcher, isInDebugMode: true);

Açıklama: initialize çağrısında debug modunu açmak için isInDebugMode parametresi true olarak verilir.

3 Senkron akışı parçaları

Kavram Anlamı
initialize Callback kaydı
registerPeriodicTask Periyodik görev
callbackDispatcher Arka plan callback
frequency Tekrar süresi

İleri seviye bölümündeki tüm dersler