Sobes.tech
Senior

Embedder-də axınlar haqqında bilikləriniz nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Flutter-də Embedder platformaya məxsus xidmətlərin təminatı və əməliyyat sistemi ilə inteqrasiyadan məsuldur. O, Flutter mühərriki və tətbiqin düzgün işləməsi üçün lazım olan ipleri idarə edir:

  • UI Thread: Əsas ip, burada tətbiqinizin kodu icra olunur, UI çəkilir və toxunma hadisələri işlənir. Bu, tətbiqin cavabvermə qabiliyyəti üçün çox vacibdir. Bu ipin bloklanması "dondurmalar" və FPS-in azalmasına səbəb olur.
  • GPU Thread: Qrafik prosessoruna render əmrlərini göndərməkdən məsuldur.
  • IO Thread: Fayllar, şəbəkə, verilənlər bazası kimi bahalı giriş/çıxış əməliyyatlarını yerinə yetirmək üçün istifadə olunur, beləliklə UI Thread bloklanmır.
  • Platform Thread: platformanın yerli API çağırışlarının yerinə yetirildiyi ip (məsələn, Android Activity və ya iOS ViewController).

Embedder bu iplərin yaradılmasını və düzgün qarşılıqlı əlaqəsini təmin edir ki, tətbiqin hamar və səmərəli işləməsini təmin etsin. Flutter mühərriki və çərçivəsi tapşırıqların iplər arasında bölüşdürülməsinin böyük hissəsini həyata keçirir, lakin inkişaf etdirici bloklayıcı əməliyyatlara diqqət yetirməlidir ki, onlar təsadüfən UI Thread-ə təsir edə bilər. Asinxron əməliyyatlar və digər ipərlə işləmək üçün async/await, Isolate (əslində paralel hesablamalar üçün) və platforma kanalları istifadə olunur.

Arxa plan işi üçün Isolate istifadəsi:

// Ayrı bir Isolate-də icra olunacaq funksiya
void heavyComputation(SendPort sendPort) {
  // Resurs tələb edən hesablamaları yerinə yetir
  int result = 0;
  for (int i = 0; i < 1000000000; i++) {
    result += i;
  }
  // Nəticəni geri göndər
  sendPort.send(result);
}

// Yeni Isolate yaradıb işə salmaq
void runHeavyTask() async {
  ReceivePort receivePort = ReceivePort();
  Isolate isolate = await Isolate.spawn(heavyComputation, receivePort.sendPort);

  // Isolate-dən gələn mesajları dinləyirik
  receivePort.listen((message) {
    print('Hesablama nəticəsi: $message');
    isolate.kill(); // Nəticə alındıqdan sonra Isolate-i dayandır
  });
}

async/awaitIsolate arasındakı fərq:

Xüsusiyyət async/await Isolate
Paralelizm Bir ipdə rəqabət Əsl paralelizm çox nüvədə
Əlaqə Qeyri-müəyyən (Future vasitəsilə) Aydın (SendPort/ReceivePort vasitəsilə)
İzolyasiya Yaddaş izolyasiyası yoxdur Tam yaddaş izolyasiyası
Daha yaxşı üçün Bloklamayan I/O, qısa tapşırıqlar Uzun və ağır hesablamalar

Bu ipləri və onların işləmə prinsiplərini bilmək, yüksək performanslı Flutter tətbiqləri yazmaq üçün çox vacibdir.