Ahoj, zoufalý dotaz. Děláte někdo widgety? Mám tu záhadu, nad kterou sedím už dvě hodiny, zkouším kde co a bez výsledku. Ve vlastní třídě poděděné z AppWidgetProvideru mám onUpdate(). Ten je v android knihovně interně volaný z onReceive(), když přijde android.appwidget.action.APPWIDGET_UPDATE - tato událost by dle dokumentace měla přijít např. po rebootu, restartu aplikace nebo když je dosažen časový limit nastavený v konfiguraci appwidget-provider přes updatePeriodMillis. Podotýkám, že to mám nastavené na 0.
A teď, úplně jsem vyházel kód, zůstala jen holá kostra. V tom onUpdate() volám:
val refreshWorkRequest = OneTimeWorkRequestBuilder<RefreshWidgetWorker>()
WorkManager.getInstance().enqueueUniqueWork(REFRESH_WORKER_TAG, ExistingWorkPolicy.KEEP, refreshWorkRequest)
uvnitř toho RefreshWidgetWorkeru je doWork, který teď nic nedělá, jen vrátí Result.success()
A teď ten problém - zavolání toho enqueueUniqueWork způsobí to, že je v tom widget provideru neustále vyvoláván onUpdate(), tj. do onReceive() chodí ta akce action.APPWIDGET_UPDATE - a vůbec nechápu proč. Když to volání enqueue metody vyhodím, je to v pohodě. Způsobuje snad vyvolání nějakého "procesu" na pozadí to, že do widgetu jde znova ten Intent? Je otázka, jestli nový nebo původní?