Last active
February 4, 2021 12:44
-
-
Save auyanik/847a0ee0fc6088600ac13160a1952762 to your computer and use it in GitHub Desktop.
Add job scheduler with dagger2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Buraya serviebuilderModul ekledik | |
@Singleton //Bunu unutma | |
@Component(modules = [AndroidSupportInjectionModule::class, AppModule::class, ViewBuilderModule::class, ServiceBuilderModule::class]) | |
interface AppComponent : AndroidInjector<AppControl> { | |
@Component.Builder | |
abstract class Builder : AndroidInjector.Builder<AppControl>() | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//scheduler için jobInfo gereklidir scheduler özellikleri burada belirlenir | |
//JobInfo provider oluyor JobScheduler provide olarak çağırdığımızda JobInfo da provider olarak oluşturduk | |
@RequiresApi(Build.VERSION_CODES.LOLLIPOP) | |
@Provides | |
fun provideJobInfo(app: AppControl): JobInfo = JobInfo.Builder(123, ComponentName(app, JobSchedule::class.java)) | |
.setRequiresCharging(false) | |
.setMinimumLatency(1) | |
.setPersisted(true) | |
.build() | |
//JobScheduler provide fonksiyonu | |
@RequiresApi(Build.VERSION_CODES.LOLLIPOP) | |
@Provides | |
@Singleton | |
fun provideJobScheduler(app: AppControl): JobScheduler = app.getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Artık bunun içinde inject işlemleri yapılabilir. | |
@RequiresApi(Build.VERSION_CODES.LOLLIPOP) | |
class JobSchedule : JobService() { | |
private var TAG = JobSchedule::class.java.simpleName | |
override fun onCreate() { | |
super.onCreate() | |
AndroidInjection.inject(this) | |
} | |
override fun onStopJob(params: JobParameters?): Boolean { | |
Log.d(TAG, "Job paused.") | |
return true | |
} | |
override fun onStartJob(params: JobParameters?): Boolean { | |
return true | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Çağırmayı unutmuyoruz :) | |
@Inject | |
lateinit var jobInfo: JobInfo | |
@Inject | |
lateinit var jobScheduler: JobScheduler | |
override onCreate(..){ | |
. | |
. | |
. | |
jobScheduler.schedule(jobInfo) | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Tabi ki maniest unutmamak lazım | |
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> | |
<service | |
android:name=".base.workmanager.JobSchedule" | |
android:permission="android.permission.BIND_JOB_SERVICE" | |
android:exported="false"/> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Servicebuilder oluşturduk cünkü baska service ihtiyacı olabilir. | |
@Module | |
public abstract class ServiceBuilderModule { | |
@ContributesAndroidInjector | |
abstract JobSchedule contributeJobSchedule(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment