Jetpack WorkManager: Network Entegrasyonu



Herkese selamlar,


Bugün daha önceden de bahsettiğimiz Android Jetpack'le birlikte gelen WorkManager konusu hakkında detaylı bir app yapacağız. WorkManager kullanımının yanı sıra farklı framework ve library'lerden de yaralanarak, bunlarla birlikte WorkManager entegrasyonun nasıl çalıştığı/kullanıldığını öğreneceğiz.


Eğer WorkManager'ı daha önceden bilmiyorsanız, WorkManager konusu hakkında yazdığım Jetpack: WorkManager Temel Kullanımı yazımı okumanızı kesinlikle tavsiye ederim.


WorkManager'ların en çok kullanıldığı alanlar API'ler ve uzak sunuculardır. Bu sebeple bu uygulamamızda çok güzel bir gerçek kullanım senaryosu oluşturacağız. Uygulamamızda WorkManager haricinde Retrofit, Rxjava, RxWork, Picasso ve MpAndroid library ve framework'lerini kullandık. Asıl yazı konumuzun bunlar olmadığı için anlatılması çok elzem olan yerler hariç bunlara pek değinmeyeceğiz. Bu nedenle sizlerin bu konulardan bir veya daha fazlasını bilmeme ihtimaline karşı linkleri bırakıyorum.


Retrofit:

https://www.mobiler.dev/post/kotlin-ile-retrofit-kutuphanesi-entegrasyonu

Rxjava:

https://www.raywenderlich.com/2071847-reactive-programming-with-rxandroid-in-kotlin-an-introduction

Picasso:

https://square.github.io/picasso/

RxWorker:

https://developer.android.com/topic/libraries/architecture/workmanager/advanced/rxworker

MpAndroidChart:

https://github.com/PhilJay/MPAndroidChart


(RxWorker ve MpAndroidChart'a kendim de değineceğim için çok az göz gezdirseniz ve build.gradle kısımlarını halletseniz yeter bile)


Uygulamamız, ülkeler ve o ülkelerin en kalabalık şehirlerinin isimlerini, logolarını, nüfuslarını veren, kıtalar ve o kıtaların en kalabalık şehirlerinin isimlerini, logolarını, nüfuslarını veren, kendi oluşturduğum iki API'den değer çekecektir. Sonrasında bu değerler üzerinde değişikler yapılarak grafik gösterim için son değerler oluşturulacak. En sonunda da bu iki değeri tek bir Worker'da birleştirerek grafik karşılaştırması yapılacaktır. Api'leri collectapi sitesi üzerinden oluşturdum. İsterseniz sizler de kendi api'lerinizi oluşturup kendi örneğinizde kullanabilirsiniz.


Bizler bu uygulamamızda api'lerin main url'lerini kullanacağız, bunun için de uygulama içinden authorize işlemi gerekli. Ben sizler için OkHttp ile genel olarak authorize işlemini projede yazıp yorum satırı olarak bıraktım. Aynı zamanda bir diğer yöntem olan, request işlemleri için tek tek authorize ekleme işlemlerini de kodlarımıza ekledim.


Proje kodlarını inceleyip iki yöntemden birini