Google Work Manager'ı sizin üçün necə istifadə edəcəyinizi izah edin

Şəkil mənbəyi: https://ayusch.com

Gündəlik Android inkişaf tapşırıqlarında qarşılaşdığımız bəzi istifadə hallarını nəzərdən keçirin:

  1. Mobil oyun üçün uzaq bir serverdən məlumat fayllarının yüklənməsi.
  2. Bir serverdən faylları yükləyin.
  3. Mobil cihazlarda toplanan məlumatları arxa xidmət ilə sinxronizasiya edin, məs. B. Çökmə analizlərinin, qeyd sənədlərinin yüklənməsi və s.
  4. Cihaz sənədlərini onlayn yaddaşa köçürün.

Bu istifadə hallarının ortaq nöqtəsi nədir?

  • Hamısı uzun müddətdir davam edən vəzifələrdir.
  • İstifadəçi tətbiqlə qarşılıqlı əlaqə qurarkən arxa plan mövzusunda çalışmaq üçün təxirə salına bilər. Bu tapşırıqlar tətbiqetmənin fəaliyyətinə təsir etməməlidir.
  • İstifadəçi tətbiq ilə qarşılıqlı əlaqədə olmadıqda bunlar da işlədilə bilər.

Bu cür asenkron tapşırıqların icrası müasir Android tətbiqetmələrində çox yaygındır. Nadir hallarda, backend xidmətləri ilə qarşılıqlı əlaqəsi olmayan və tamamilə oflayn işləyən tətbiqetmələrə rast gəlirik. Bu səbəbdən, Google mühəndisləri Android-də bu cür tapşırıqları planlaşdırmaq üçün bir çox sifariş planlaşdırma API hazırladılar, məsələn. B. Xidmətlər, siqnalizasiya meneceri, sifariş planlayıcısı, GCM şəbəkə meneceri və Firebase İş Dispetçeri ən yaxşı) həll: İş meneceri.

İş Meneceri, fikrimcə, Google’un son bir neçə ildə Android üçün inkişaf etdirdiyi ən yaxşı API. Ancaq əvvəlcə əmək müdiri istisna olmaqla, bütün planlaşdırma mexanizmlərini müzakirə edək və üstünlüklərini və mənfi cəhətlərini araşdıraq. Sonda İş Menecerinin niyə mövcud həll yollarını üstələdiyini izah edəcəyəm. İş menecerini nə vaxt istifadə etməməyinizi də sizə xəbər verəcəyəm.

Bu məqalədə aşağıdakı 4 planlaşdırma mexanizmi təsvir olunur:

  1. Xidmətlər
  2. İş planlaşdırıcısı
  3. GCM Şəbəkə Meneceri
  4. Firebase İş Dispetçeri

Beləliklə başlayaq!

Xidmətlər

Xidmətlər birinci yerdədir. Xidmətlər xatırladığım müddətdə mövcuddur. İnkişaf edənlər üçün musiqi ifa etmək, faylları yükləmək, məlumatların sinxronizasiyası, Android tətbiqinizin qaynaqlarını sındırmaq və daha çox şey kimi yorucu tapşırıqları yerinə yetirmək üçün ideal bir həll idi. Bu tapşırıqları yerinə yetirmək üçün daha yaxşı və daha enerji sərfəli yolların olduğunu bildiyimiz halda, xidmətlər bildiriş çubuğunda bildirişlə arxa planda musiqi çalmaq kimi bəzi istifadə halları üçün hələ də çox aktualdır.

Bununla birlikdə, istifadə vəziyyətlərinin qalan hissəsi üçün uzun bir yol qət etdik və Android bu cür vəzifələr üçün xidmətlərdən daha yaxşı API təmin etdi. Xidmətlərlə bağlı bəzi problemlərə baxaq:

  • Varsayılan olaraq, xidmətlər elan edildikləri tətbiqetmənin əsas mövzuları üzərində işləyirlər. Görüntü işləmə, şəbəkə qurma və ya MP-3 oynatma kimi uzun müddət davam edən tapşırıqlar tətbiqetmənin işini ləngidir və istifadəçi interfeysi qeyri-sabit olur.
  • Müştəri ilə ünsiyyət qurmaq üçün proseslərarası ünsiyyətdən istifadə etməlisiniz. Bu, müştəri ilə eyni müddətdə olduğunuzdan daha yavaşdır.
  • Hata ayıklaması çətindir, çünki başqa bir prosesi bağlamalısan.
  • Xidmətiniz çökərsə, əsas prosesdən asılı olmayaraq çökər. Bu da bəzən faydalı ola bilər.
  • Uzun müddət davam edən tapşırıqlar tətbiqetmələri daha mürəkkəb hala gətirərək xidmətlərdə mövzuları istifadə etməyinizi tələb edir.
  • Bir tapşırıq tamamlandıqda xidməti dayandırmağı unutursanız, arxa planda işləməyə davam edə və batareyanı boşaltın.

Xidmət bildirişlərlə musiqi çalma kimi tapşırıqlar üçün faydalı olsa da, uzun müddət davam edən tapşırıqlar üçün əsas ipin bloklana biləcəyi ən yaxşı həll yolu deyil: B. şəbəkələri, geniş hesablamalar, MP3 səsləndirmə və s.

İş planlaşdırıcısı

İş Planlayıcı API, API Səviyyə 21-də təqdim edildi. Şəbəkə tapşırıqları üçün effektivdir və JobInfo.Builder () -də göstərilən kriteriyalara cavab verildiyi təqdirdə arxa planda işləyir, məsələn sistem işlərinə qənaət etmək üçün bu işləri bir yerə toplamaq cəhdi edilir. Bir iş hər hansı bir səbəbdən uğursuz olarsa, geri çəkilmə və yenidən məntiqlə gəlir.

Lakin təxirə salınmayan iş üçün uyğun deyil, məs. B. Dərhal və təxirə salınmadan icra edilməli olan bir düyməni basaraq bir varlığın yüklənməsi.

Əksər inkişaf etdiriciləri narahat edən digər mənfi cəhət, bunun yalnız API 21 və daha yuxarı versiyaları tərəfindən dəstəklənməsidir. Beləliklə, 21% -dən aşağı olan Android cihazlarında işləməyəcək ki, bu da hazırda% 15-dir.

GCM Şəbəkə Meneceri

GCM Şəbəkə Meneceri, İş Planlayıcısının bütün üstünlüklərini geriyə uyğunluq üstünlüyü ilə təklif edir. Daxili olaraq, GCM Network Manager API versiyası> 21 üçün İş Zamanlayıcıdan istifadə edir. 21 versiyaları üçün Google Play Services planlaşdırma modulu istifadə olunur.

Həm də müntəzəm tapşırıqların yanında birdəfəlik tapşırıqları planlaşdırma qabiliyyətinə malikdir. Bu, İş Planlayıcıda tələb olunan geliştirici tərəfindən işi yenidən planlaşdırma ilə bağlı əlavə tapşırığı aradan qaldırır.

Ancaq bəzi çatışmazlıqlar var:

  • Play Services planlaşdırma modulu istifadə olunduğundan, yalnız Play Services quraşdırılmış cihazlarda işləyir.
  • Oynatma xidmətləri güncəlləşdikdə, işlər silinir. Geliştirici işin yenidən planlaşdırılması ilə məşğul olmalıdır.
  • Yazıla bilməyən tapşırıqlar və ya müəyyən bir zamanda işlədilməli olan tapşırıqlar üçün uyğun deyil.
  • Google 10 aprel 2018-ci ildə GCM-i rədd etdi və 11 aprel 2019-cu il tarixinə qədər tamamilə silinəcək. Bu səbəbdən GCM Şəbəkə Menecerindən istifadə etməyə davam etməməyiniz məsləhətdir.

Problemlərimizi həll edən Firebase İş Dispetçerinə nəzər salaq.

Firebase İş Dispetçeri

Firebase Job Dispatcher, arxa plan işlərini planlaşdırmaq üçün bir Android kitabxanasıdır. API versiyası 9-a qədər geriyə uyğunluğu dəstəkləyir.

GCM Şəbəkə Meneceri kimi, işləri planlaşdırmaq üçün Google Play Xidmətləri planlaşdırma mühərrikindən istifadə edir. Cihazda səsləndirmə xidmətləri quraşdırılmayıbsa, Alarm Manager istifadə olunur. İş Zamanlayıcı API versiyası 21 və ya daha yüksək olan Android cihazlar üçün istifadə olunur.

İndiyə qədər çox yaxşı. Geriyə uyğunluğu idarə edir, Google Play Xidmətləri olmayan cihazlarda işləyir və birdəfəlik və müntəzəm tapşırıqlara malikdir.

Bəs Firebase İş Dispetçerində hər şey olduğu zaman iş meneceri ilə niyə narahat olmalısınız?

Yaxşı, çünki bu API-lər səhv istifadə olunarsa, batareyanızı tükəndirəcəkdir. Enerjiyə qənaət etmək üçün Android, Doze rejimi, hərəkətdə olan doze, arxa plan xidmətindəki məhdudiyyətlər, tətbiqetmə gözləmə kovaları və s. Kimi bir çox enerji qənaət xüsusiyyəti buraxdı.

Bu bir çox spagetti-if-else kodu deməkdir. Sizi Android inkişafındakı Planlama API-yə ən son əlavə ilə tanış edim:

Əmək meneceri

Daha əvvəl də qeyd etdiyim kimi, İş Menecerinin Google-un son bir neçə ildə Android üçün hazırladığı ən yaxşı API-lərdən biri olduğunu düşünürəm. Planlaşdırma API-sindən gözlədiyiniz bütün meyarlara cavab verir və olduqca mücərrəddir, beləliklə enerji istehlakı, geri çəkilmə və yenidən planlaşdırma kimi ətraflı detallar barədə narahat olmayın.

İş Meneceri təxirə salınmış, zəmanətli arxa plan işi üçün uygundur. Burada diqqət yetiriləcək açar sözlər gözlədilir və zəmanətlidir.

Android-də İş Meneceri tapşırıqlarınızı dərhal yerinə yetirmir, ancaq qeyd etdiyiniz məhdudiyyətlərin yerinə yetirildiyi bir vaxtda yerinə yetirilən tapşırıqlardan fərqlidir. Batareya məhdudiyyətlərini də nəzərə alır. Ayrıca cihazınız yenidən başlasa belə işin yerinə yetiriləcəyinə zəmanət verir.

İş menecerinin Android tətbiqetmələrinizdə istifadəsinin nə vaxt mükəmməl olduğunu təsvir edən əla bir diaqram:

Şəkil mənbəyi: Google

Gördüyünüz kimi, gələcəkdə tam olaraq yerinə yetirilməsinə ehtiyac olmayan təxirə salınmış vəzifələr üçün yaxşıdır, məsələn: B. həyəcan və ya xatırlatma.

İş menecerinin istifadəsinin üstünlükləri:

  • API 14-ə qədər geriyə uyğun
  • Şəbəkələr və ödənişlər kimi məhdudiyyətlər əlavə edin.
  • Birdəfəlik və ya müntəzəm tapşırıqları təyin edə bilər.
  • Tapşırıqları birlikdə bağlaya bilər.
  • Cihaz yenidən başlasa belə icrasını təmin edir.
  • Batareyanın və şəbəkənin mövcudluğu nəzərə alınmaqla gələcək tapşırıqları optimallaşdırılmış vaxtda həyata keçirir.
  • Android Jetpack kitabxanalarının bir hissəsidir və Google tərəfindən tövsiyə olunur: P

Qəza hesabatlarının arxa plan xidmətinə göndərilməsi, məlumatların veb xidmətinə sinxronizasiyası, tətbiq aktivlərinin sındırılması və s. Kimi vəzifələr üçün faydalıdır.

Nəticə

İş meneceri, Android tətbiqinizdə təxirə salınmış hər hansı bir işi yerinə yetirmək üçün mütləq istifadə edilə bilər.

Bununla birlikdə, tapşırığın dərhal yerinə yetirilməsinə ehtiyac varsa (musiqi səsləndirmək, bir fayl yükləmək), bunun ən yaxşı yolu ön plan xidmətindən istifadə etmək (məsələn, musiqi çalmaq və musiqi dəyişdirmək üçün bildiriş göstərmək) və ya yükləmə menecerindən istifadə etməkdir ( Bir faylı yükləyin) faylını icra edin).

Artıq Work Manager istifadə edərək kodunuzu mümkün əvəzetmələrə görə yoxlaya bilərsiniz. Başlamaq üçün yaxşı bir yer, tətbiqinizin yaratdığı bütün xidmətlər olacaqdır;)

Məqalə əvvəlcə burada yayımlandı.

Sonra nə var

İş meneceri ilə bağlı növbəti məqalədə Work Manager-ı bir Android tətbiqetmə sisteminə inteqrasiya edəcəyik və Android-də Work Manager-ın qurulmasına və istifadəsinə praktik bir baxış verəcəyik. Beləliklə, bizi izləyin!

* Vacib *: Mobil inkişaf etdiricilər üçün ən son texniki inkişaflarla, xüsusən Android inkişaf, RxJava, Kotlin, Flutter və ümumi mobil inkişafla əlaqəli məlumatlarımızı bölüşə biləcəyimiz bir SLACK iş sahəsi yaratdım.
İş sahəsinə qoşulmaq üçün bu linki vurun. Tamamilə pulsuzdur!

Oxuduqlarınızı bəyənirsiniz? Bu yazını Facebook, WhatsApp və LinkedIn-də paylaşmağı unutmayın.

Məni LinkedIn, Quora, Twitter və Instagram-da izləyə bilərsiniz, burada Android və Flutter başda olmaqla mobil inkişaf ilə bağlı sualları cavablandırıram.