mirror of
https://github.com/rt-bishop/Look4Sat.git
synced 2026-10-02 03:15:37 +00:00
Added automatic data update worker
This commit is contained in:
1 parent
216f96caef
commit
836fac2bb7
5 files changed
+41
-1
No files matched your search
@@ -73,6 +73,7 @@ dependencies {
|
|||||||
implementation "androidx.navigation:navigation-runtime-ktx:$navigation_version"
|
implementation "androidx.navigation:navigation-runtime-ktx:$navigation_version"
|
||||||
implementation "androidx.navigation:navigation-fragment-ktx:$navigation_version"
|
implementation "androidx.navigation:navigation-fragment-ktx:$navigation_version"
|
||||||
implementation "androidx.navigation:navigation-ui-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-runtime:$room_version"
|
||||||
implementation "androidx.room:room-ktx:$room_version"
|
implementation "androidx.room:room-ktx:$room_version"
|
||||||
kapt "androidx.room:room-compiler:$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.Lifecycle
|
||||||
import androidx.lifecycle.LifecycleEventObserver
|
import androidx.lifecycle.LifecycleEventObserver
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
|
import androidx.work.*
|
||||||
import com.rtbishop.look4sat.databinding.ActivityMainBinding
|
import com.rtbishop.look4sat.databinding.ActivityMainBinding
|
||||||
|
import com.rtbishop.look4sat.framework.UpdateWorker
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
|
import java.util.concurrent.TimeUnit
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
class MainActivity : AppCompatActivity() {
|
class MainActivity : AppCompatActivity() {
|
||||||
@@ -43,6 +46,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
installSplashScreen()
|
installSplashScreen()
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContentView(ActivityMainBinding.inflate(layoutInflater).root)
|
setContentView(ActivityMainBinding.inflate(layoutInflater).root)
|
||||||
|
refreshUpdateWorker(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun attachBaseContext(newBase: Context?) {
|
override fun attachBaseContext(newBase: Context?) {
|
||||||
@@ -51,6 +55,14 @@ class MainActivity : AppCompatActivity() {
|
|||||||
applyOverrideConfiguration(newConfig)
|
applyOverrideConfiguration(newConfig)
|
||||||
super.attachBaseContext(newBase)
|
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) {
|
fun <T> Fragment.getNavResult(@IdRes id: Int, key: String, onResult: (result: T) -> Unit) {
|
||||||
|
|||||||
@@ -18,7 +18,13 @@
|
|||||||
package com.rtbishop.look4sat.presentation
|
package com.rtbishop.look4sat.presentation
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
|
import com.rtbishop.look4sat.domain.IDataRepository
|
||||||
import dagger.hilt.android.HiltAndroidApp
|
import dagger.hilt.android.HiltAndroidApp
|
||||||
|
import javax.inject.Inject
|
||||||
|
|
||||||
@HiltAndroidApp
|
@HiltAndroidApp
|
||||||
class MainApplication : Application()
|
class MainApplication : Application() {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
lateinit var repository: IDataRepository
|
||||||
|
}
|
||||||
@@ -10,6 +10,7 @@ buildscript {
|
|||||||
constraint_version = '2.1.4'
|
constraint_version = '2.1.4'
|
||||||
lifecycle_version = '2.5.1'
|
lifecycle_version = '2.5.1'
|
||||||
navigation_version = '2.5.1'
|
navigation_version = '2.5.1'
|
||||||
|
work_version = '2.7.1'
|
||||||
room_version = '2.4.3'
|
room_version = '2.4.3'
|
||||||
material_version = '1.6.1'
|
material_version = '1.6.1'
|
||||||
osmdroid_version = '6.1.13'
|
osmdroid_version = '6.1.13'
|
||||||
|
|||||||
Reference in new issue
Block a user