hybrid_task_runner 1.2.0
hybrid_task_runner: ^1.2.0 copied to clipboard
A Flutter package implementing a Hybrid Background Strategy using AlarmManager for precision scheduling and WorkManager for reliable long-running task execution on Android.
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.2.0 - 2026-02-04 #
Added #
- Permission API for Android 12+ exact alarm permission handling
HybridRunner.canScheduleExactAlarms()- Check if exact alarms are allowedHybridRunner.openExactAlarmSettings()- Open system settings for permission grant
- Added
permission_handlerdependency
Changed #
- BREAKING: Removed
USE_EXACT_ALARMpermission from package manifest- This permission is only for calendar/alarm apps per Google Play policy
- Apps must now check permission and guide users to Settings on Android 14+
- Updated README with Android 14+ permission handling guide
- Updated example app with permission status card and grant button
1.1.1 - 2026-02-04 #
Documentation #
- Updated installation instructions to use
flutter pub add - Added pub.dev badge to README
- Updated
pubspec.yamlmetadata
1.1.0 - 2026-02-04 #
Added #
-
Task Overlap Policy - Control what happens when tasks overlap
TaskOverlapPolicy.replace- Cancel running task, start new one (default)TaskOverlapPolicy.skipIfRunning- Ignore new task if one is runningTaskOverlapPolicy.parallel- Run both tasks simultaneously
-
Multi-Task API - Register multiple named tasks with independent schedules
HybridRunner.registerTask()- Register a named taskHybridRunner.getRegisteredTasks()- List all registered tasksHybridRunner.stopTask(name)- Stop a specific task by nameHybridRunner.stopAllTasks()- Stop all registered tasks
-
One-Time Tasks - Tasks that run once and are automatically removed
- New
isOneTimeparameter inregisterTask() - One-time tasks don't get backup periodic WorkManager tasks
- New
-
RegisteredTask Model - Task configuration with JSON serialization
- Properties:
name,interval,isActive,isOneTime,registeredAt,alarmId
- Properties:
Changed #
- Renamed
loopIntervalparameter tointervalinregisterTask()for clarity - Updated README with comprehensive English documentation
- Clarified that hybrid approach has no minimum interval (only backup task has 15-min minimum)
1.0.0 - 2026-02-03 #
Added #
- Initial release of
hybrid_task_runner HybridRunner.initialize()- Initialize AlarmManager and WorkManager pluginsHybridRunner.start()- Start the hybrid task loop with configurable intervalHybridRunner.stop()- Stop the task loop and cancel pending alarms/tasksHybridRunner.isActive- Check if runner is currently activeHybridRunner.loopInterval- Get current loop intervalHybridStorage- Utility for persisting callback handles and configuration- Exported callbacks
alarmCallbackandworkmanagerCallbackDispatcherfor advanced use cases - Comprehensive test suite with 29 tests
- Example application demonstrating usage
- Full documentation and README
Architecture #
- Uses
android_alarm_manager_plusfor precision scheduling - Uses
workmanagerfor reliable long-running task execution - Uses
shared_preferencesfor persisting callback handles across isolates - Hybrid strategy: Alarm fires → Enqueues WorkManager → Executes task → Reschedules alarm