kopia lustrzana https://github.com/rt-bishop/Look4Sat
Added automatic data update worker
rodzic
216f96caef
commit
836fac2bb7
|
@ -73,6 +73,7 @@ dependencies {
|
|||
implementation "androidx.navigation:navigation-runtime-ktx:$navigation_version"
|
||||
implementation "androidx.navigation:navigation-fragment-ktx:$navigation_version"
|
||||
implementation "androidx.navigation:navigation-ui-ktx:$navigation_version"
|
||||
implementation "androidx.work:work-runtime-ktx:$work_version"
|
||||
implementation "androidx.room:room-runtime:$room_version"
|
||||
implementation "androidx.room:room-ktx:$room_version"
|
||||
kapt "androidx.room:room-compiler:$room_version"
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
package com.rtbishop.look4sat.framework
|
||||
|
||||
import android.content.Context
|
||||
import android.util.Log
|
||||
import androidx.work.Worker
|
||||
import androidx.work.WorkerParameters
|
||||
import com.rtbishop.look4sat.presentation.MainApplication
|
||||
import java.text.DateFormat
|
||||
import java.util.*
|
||||
|
||||
class UpdateWorker constructor(private val appContext: Context, workerParams: WorkerParameters) :
|
||||
Worker(appContext, workerParams) {
|
||||
|
||||
override fun doWork(): Result {
|
||||
val dateTime = DateFormat.getDateTimeInstance().format(Calendar.getInstance().time)
|
||||
Log.d("UpdateWorker", "Started periodic data update on $dateTime")
|
||||
(appContext.applicationContext as MainApplication).repository.updateFromWeb()
|
||||
return Result.success()
|
||||
}
|
||||
}
|
|
@ -31,8 +31,11 @@ import androidx.fragment.app.Fragment
|
|||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.LifecycleEventObserver
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.work.*
|
||||
import com.rtbishop.look4sat.databinding.ActivityMainBinding
|
||||
import com.rtbishop.look4sat.framework.UpdateWorker
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
@AndroidEntryPoint
|
||||
class MainActivity : AppCompatActivity() {
|
||||
|
@ -43,6 +46,7 @@ class MainActivity : AppCompatActivity() {
|
|||
installSplashScreen()
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(ActivityMainBinding.inflate(layoutInflater).root)
|
||||
refreshUpdateWorker(this)
|
||||
}
|
||||
|
||||
override fun attachBaseContext(newBase: Context?) {
|
||||
|
@ -51,6 +55,14 @@ class MainActivity : AppCompatActivity() {
|
|||
applyOverrideConfiguration(newConfig)
|
||||
super.attachBaseContext(newBase)
|
||||
}
|
||||
|
||||
private fun refreshUpdateWorker(context: Context, workerName: String = "UpdateWorker") {
|
||||
val workPolicy = ExistingPeriodicWorkPolicy.REPLACE
|
||||
val network = Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build()
|
||||
val request = PeriodicWorkRequest.Builder(UpdateWorker::class.java, 24, TimeUnit.HOURS)
|
||||
.setConstraints(network).build()
|
||||
WorkManager.getInstance(context).enqueueUniquePeriodicWork(workerName, workPolicy, request)
|
||||
}
|
||||
}
|
||||
|
||||
fun <T> Fragment.getNavResult(@IdRes id: Int, key: String, onResult: (result: T) -> Unit) {
|
||||
|
|
|
@ -18,7 +18,13 @@
|
|||
package com.rtbishop.look4sat.presentation
|
||||
|
||||
import android.app.Application
|
||||
import com.rtbishop.look4sat.domain.IDataRepository
|
||||
import dagger.hilt.android.HiltAndroidApp
|
||||
import javax.inject.Inject
|
||||
|
||||
@HiltAndroidApp
|
||||
class MainApplication : Application()
|
||||
class MainApplication : Application() {
|
||||
|
||||
@Inject
|
||||
lateinit var repository: IDataRepository
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@ buildscript {
|
|||
constraint_version = '2.1.4'
|
||||
lifecycle_version = '2.5.1'
|
||||
navigation_version = '2.5.1'
|
||||
work_version = '2.7.1'
|
||||
room_version = '2.4.3'
|
||||
material_version = '1.6.1'
|
||||
osmdroid_version = '6.1.13'
|
||||
|
|
Ładowanie…
Reference in New Issue