Install
$ agentstack add skill-prasad-vennam-awesome-android-ai-agent-skills-android-background-execution ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Android Background Execution Skill
This skill provides a structured approach to implementing background work in Android, ensuring high performance, battery efficiency, and compliance with modern system restrictions (API 30 and above).
When to Use
- Implementing deferred tasks (e.g., database sync, log uploading).
- Running immediate, user-perceivable tasks (e.g., media playback, active navigation).
- Scheduling time-sensitive actions (e.g., calendar reminders, exact alarms).
- Navigating background execution limits and battery optimization (Doze Mode).
🛠 Core Technologies
1. WorkManager (Recommended)
Use for persistent, deferrable work that must execute even if the app exits or the device restarts.
- Immediate: Tasks that should start as soon as possible (can use
setExpedited(true)). - Long-Running: Tasks that might run longer than 10 minutes (API 31+ requires a Foreground Service).
- Periodic: Recurring tasks (minimum 15-minute interval).
2. Foreground Services
Use for immediate, user-visible work that is the primary focus of the app (e.g., Music Player, Step Tracker).
- Must show a persistent notification.
- From API 34+, you must declare a
foregroundServiceTypein the manifest.
3. Alarms (AlarmManager)
Use for exact, time-based scheduling.
- Avoid for general background work to save battery.
setExactAndAllowWhileIdle()is for high-precision needs (e.g., clocks).
🚀 Implementation Workflow
1. Choose the Right Tool
| Requirement | Recommended Tool | | :--- | :--- | | Deferrable, restart-resilient | WorkManager (OneTime/Periodic) | | Immediate, continues when app is closed | WorkManager (Expedited) | | User-visible, real-time | Foreground Service | | Specific clock time (e.g. 8:00 AM) | AlarmManager |
2. Implementation Patterns
WorkManager (Kotlin)
class SyncWorker(context: Context, params: WorkerParameters) : CoroutineWorker(context, params) {
override suspend fun doWork(): Result {
return try {
// Background logic here
Result.success()
} catch (e: Exception) {
if (runAttemptCount ()
.setConstraints(constraints)
.setBackoffCriteria(BackoffPolicy.EXPONENTIAL, 1, TimeUnit.MINUTES)
.build()
WorkManager.getInstance(context).enqueue(syncRequest)
Foreground Service (API 34+)
- Manifest Declaration:
- Service Implementation:
class MyService : Service() {
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
val notification = NotificationCompat.Builder(this, CHANNEL_ID)
.setContentTitle("Syncing Data")
.setSmallIcon(R.drawable.ic_sync)
.build()
ServiceCompat.startForeground(this, 1, notification, FOREGROUND_SERVICE_TYPE_DATA_SYNC)
// logic...
return START_NOT_STICKY
}
}
💡 Best Practices & Constraints
- Battery Optimization: Respect Doze Mode.
WorkManagerhandles this automatically by batching requests. - Expedited Work: For WorkManager tasks that need to start immediately, use
setExpedited(true). Note that this has quotas. - Connectivity: Always use
ConstraintsinWorkManagerto prevent unnecessary wakeups when offline. - Error Handling: Implement exponential backoff for retries to avoid "looping" failures.
- Testing: Use
WorkManagerTestInitHelperfor testing workers in unit/integration tests without waiting for real-world constraints.
📂 Project Organization
- Place Workers in
com.example.app.data.workerorcom.example.app.ui.background. - Place Services in
com.example.app.service. - Keep business logic in
Repositoryclasses, not insideWorkerorServiceclasses.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: prasad-vennam
- Source: prasad-vennam/Awesome-Android-AI-Agent-Skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.