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
@@ -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
|
||||
}
|
||||
Reference in new issue
Block a user