Description
Implement a WorkManager Worker for daily periodic statistics collection.
File to create
app/src/main/java/com/vrhub/worker/StatsCollectionWorker.kt
Specifications
- Type:
CoroutineWorker
- Frequency: Daily (
PeriodicWorkRequestBuilder<StatsCollectionWorker>(1, TimeUnit.DAYS))
- Constraints: Network connected (
NetworkType.CONNECTED)
- Backoff: Exponential (
WorkRequest.MIN_BACKOFF_MILLIS)
- Work Name:
stats_collection_work (unique periodic work)
Lifecycle
- Consent granted →
StatsCollectionWorker.enqueue(context) (use ExistingPeriodicWorkPolicy.KEEP)
- Consent revoked →
StatsCollectionWorker.cancel(context)
doWork() implementation
- Check
consentPreferences.consentEnabled
- If
false → Result.success() (do not retry)
- Retrieve installed games + favorites list
- Build
StatsCollectRequest with user tier
- Call
statsApiService.collectStats()
- If success →
Result.success(), else Result.retry()
Reference
docs/CLIENT_SPEC.md §3.1, §3.4
docs/CLIENT_IMPLEMENTATION.md §9
Description
Implement a WorkManager Worker for daily periodic statistics collection.
File to create
app/src/main/java/com/vrhub/worker/StatsCollectionWorker.ktSpecifications
CoroutineWorkerPeriodicWorkRequestBuilder<StatsCollectionWorker>(1, TimeUnit.DAYS))NetworkType.CONNECTED)WorkRequest.MIN_BACKOFF_MILLIS)stats_collection_work(unique periodic work)Lifecycle
StatsCollectionWorker.enqueue(context)(useExistingPeriodicWorkPolicy.KEEP)StatsCollectionWorker.cancel(context)doWork()implementationconsentPreferences.consentEnabledfalse→Result.success()(do not retry)StatsCollectRequestwith user tierstatsApiService.collectStats()Result.success(), elseResult.retry()Reference
docs/CLIENT_SPEC.md§3.1, §3.4docs/CLIENT_IMPLEMENTATION.md§9