Naveen Singh 57a6f2da8f fix: improve event scheduling logic on reboot (#743)
* fix: call `goAsync()` before doing background work in boot completed receiver

It's the recommended mechanism. Otherwise, there's a good chance that the system may kill the process as soon as `onReceive()` returns.

* fix: remove `canScheduleExactAlarms()` check for Android 13 and above

`AlarmManager.canScheduleExactAlarms()` should return `true` for `USE_EXACT_ALARM` as per the source code, but skipping the check shouldn't hurt. It might also help in case OEMs have customized this behavior.

See: https://android.googlesource.com/platform/frameworks/base/+/refs/heads/main/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java#2850

* fix: reschedule events when time is set or when timezone changes

* refactor: delegate startup work to work manager

 - This receiver was doing too much work and likely timed out when there are many events. Using a dedicated job should prevent such issues.
 - The `android.permission.FOREGROUND_SERVICE` permission is required prior to Android 12 for expedited work.

* fix: reschedule events on app startup when alarms are missing

This should help with recovery in case the app was force-stopped or if the alarms were cleared somehow, e.g., by battery optimization or if the OS ate the BOOT_COMPLETED broadcast for some reason.

* docs: update changelog


Refs: https://github.com/FossifyOrg/Calendar/issues/217
2025-08-31 02:39:04 +05:30
2024-01-01 23:49:55 +05:30
2021-08-17 09:36:49 +02:00
2025-02-04 18:15:28 +05:30
2025-05-05 19:32:26 +05:30
2025-03-16 00:04:59 +05:30
2019-10-13 15:28:58 +02:00
2024-01-28 17:12:20 +01:00

Fossify Calendar

Logo

Get it on Google Play Get it on F-Droid Get it on IzzyOnDroid

Your Private & Powerful Schedule Planner

Tired of cluttered calendars and privacy concerns?

Fossify Calendar is here to change that. Your open-source powerhouse for managing life, designed with privacy as its core and packed with powerful features to keep you organized.

Here's what makes Fossify Calendar different:

🚫 AD-FREE AND PRIVATE:
Your events remain yours. No ads, no tracking, no intrusive permissions.

FLEXIBLE AND CUSTOMIZABLE:
Craft events precisely with times, durations, reminders, and advanced repetition rules.

🔄 SEAMLESS SYNCING:
Sync effortlessly with Google Calendar, Outlook, Nextcloud, Exchange, and more.

🎨 PERSONALIZE YOUR PLANNER:
Set custom sounds, looping audio streams, vibrations, and themes to match your preferences.

🌈 VIBRANT WIDGETS:
Brighten your day with beautiful calendar widgets and themes for your home screen.

📅 EFFORTLESS DAY MANAGEMENT:
Plan your day with ease, whether you're a busy professional or a family organizer.

🎉 IMPORT CELEBRATIONS:
Never miss a birthday or anniversary! Easily import holidays and special dates.

🔍 FILTER VIEWS:
Quickly find what you're looking for with event filters.

📆 MULTIPLE VIEWS:
Switch between daily, weekly, monthly, yearly, and event views effortlessly.

MATERIAL DESIGN ELEGANCE:
Enjoy an intuitive and user-friendly interface with dynamic themes.

Plus, Fossify Calendar is open-source!

Join the vibrant community on GitHub, contribute to the project, and make it uniquely yours.

Download Fossify Calendar now and experience the power of a private and customizable schedule.

➡️ Explore more Fossify apps: https://www.fossify.org
➡️ Open-Source Code: https://www.github.com/FossifyOrg
➡️ Join the community on Reddit: https://www.reddit.com/r/Fossify
➡️ Connect on Telegram: https://t.me/Fossify

App image App image App image
Description
No description provided
Readme GPL-3.0 141 MiB
Languages
Kotlin 100%