使用方法
- 复制安装命令,在自己的智能体环境安装前先检查源码包。
- 从原始文档核对所需工具、凭据和支持的宿主。
- 说明输入材料与期望交付物,并对照来源检查输出。
npx skills add https://github.com/prasad-vennam/awesome-android-ai-agent-skills --skill android-background-execution开始前需了解
- 安装不包含模型订阅、API 额度或访问文件的权限。
- 仓库星数和安装量反映活跃情况,不等于独立质量或安全测试。
按源仓库内容呈现,保留标题、案例、代码、表格、链接以及原文引用的演示图片。
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 < 3) Result.retry() else Result.failure()
}
}
}// Enqueueing
val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.setRequiresBatteryNotLow(true)
.build()
val syncRequest = OneTimeWorkRequestBuilder<SyncWorker>()
.setConstraints(constraints)
.setBackoffCriteria(BackoffPolicy.EXPONENTIAL, 1, TimeUnit.MINUTES)
.build()
WorkManager.getInstance(context).enqueue(syncRequest)Foreground Service (API 34+)
- Manifest Declaration:
<service
android:name=".MyService"
android:foregroundServiceType="dataSync" />- 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.


