v1.7: fix widget losing data after screen lock/reboot
Two root causes: - Alarms don't survive reboot — BootReceiver now restarts alarm + triggers an immediate fetch on BOOT_COMPLETED - onUpdate() drew from cached prefs but never fetched fresh data — now triggers an immediate refresh so the widget is live on every launcher redraw Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -11,8 +11,8 @@ android {
|
|||||||
applicationId = "me.khodak.claudeusage"
|
applicationId = "me.khodak.claudeusage"
|
||||||
minSdk = 26
|
minSdk = 26
|
||||||
targetSdk = 34
|
targetSdk = 34
|
||||||
versionCode = 7
|
versionCode = 8
|
||||||
versionName = "1.6"
|
versionName = "1.7"
|
||||||
}
|
}
|
||||||
|
|
||||||
signingConfigs {
|
signingConfigs {
|
||||||
|
|||||||
@@ -43,6 +43,14 @@
|
|||||||
android:name=".AlarmReceiver"
|
android:name=".AlarmReceiver"
|
||||||
android:exported="false" />
|
android:exported="false" />
|
||||||
|
|
||||||
|
<receiver
|
||||||
|
android:name=".BootReceiver"
|
||||||
|
android:exported="false">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
||||||
|
</intent-filter>
|
||||||
|
</receiver>
|
||||||
|
|
||||||
<receiver
|
<receiver
|
||||||
android:name="androidx.work.impl.background.systemalarm.RescheduleReceiver"
|
android:name="androidx.work.impl.background.systemalarm.RescheduleReceiver"
|
||||||
android:exported="false"
|
android:exported="false"
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package me.khodak.claudeusage
|
||||||
|
|
||||||
|
import android.content.BroadcastReceiver
|
||||||
|
import android.content.Context
|
||||||
|
import android.content.Intent
|
||||||
|
import me.khodak.claudeusage.data.PreferencesManager
|
||||||
|
|
||||||
|
class BootReceiver : BroadcastReceiver() {
|
||||||
|
override fun onReceive(context: Context, intent: Intent) {
|
||||||
|
if (intent.action != Intent.ACTION_BOOT_COMPLETED) return
|
||||||
|
if (!PreferencesManager(context).isLoggedIn()) return
|
||||||
|
UsageUpdateWorker.schedulePeriodicRefresh(context)
|
||||||
|
UsageUpdateWorker.triggerImmediateRefresh(context)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -20,6 +20,7 @@ class ClaudeUsageWidget : AppWidgetProvider() {
|
|||||||
ids.forEach { updateWidget(context, manager, it) }
|
ids.forEach { updateWidget(context, manager, it) }
|
||||||
if (PreferencesManager(context).isLoggedIn()) {
|
if (PreferencesManager(context).isLoggedIn()) {
|
||||||
UsageUpdateWorker.schedulePeriodicRefresh(context)
|
UsageUpdateWorker.schedulePeriodicRefresh(context)
|
||||||
|
UsageUpdateWorker.triggerImmediateRefresh(context)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user