Communitygithub.com

Android 后台任务专家

专注于 Android 后台执行,包括 WorkManager、前台服务、Doze 模式以及电池优化处理。

Android 后台任务专家 是什么?

此技能专为 Android 开发者设计,旨在帮助他们高效处理后台任务,同时兼顾电池续航。它详细介绍了 WorkManager、前台服务、Doze 模式等核心 API 的使用场景与最佳实践。该技能适用于任何需要处理 Android 后台任务的场景,并特别强调了避免使用 AlarmManager 等反模式。通过决策树、代码示例和清单,它指导开发者选择正确的 API(如 WorkManager 用于可推迟工作、前台服务用于用户可见的持续任务),并提供了协程 Worker、约束设置、重试策略以及链式任务编排的完整实现。此外,还包含质量检查清单和 ADB 调试命令,确保后台执行符合 Android 平台要求。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/curiositech/windags-skills/tree/HEAD/skills/android-background-task-specialist

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Android 后台任务专家 是做什么的?

精通 Android 后台执行,涵盖 WorkManager、前台服务、Doze 模式处理以及电池高效处理。

激活触发器

在以下情况激活: "WorkManager", "background task Android", "Foreground Service", "Doze mode", "battery optimization", "periodic work", "background sync", "JobScheduler", "background processing Android"

不适用于: iOS 后台任务 → swiftui-data-flow-expert | React Native 后台任务 → mobile-offline-sync-architect | UI 架构 → jetpack-compose-navigation-expert

快速开始

  1. 选择正确的 API — 可推迟工作使用 WorkManager,用户可见的持续任务使用前台服务,短时异步工作使用协程
  2. 定义 Worker — 继承 CoroutineWorker 并使用挂起函数实现简洁的异步代码
  3. 配置约束 — 网络类型、电池电量、存储空间要求
  4. 处理 Doze 和 App Standby — 使用 WorkManager(而非 AlarmManager)进行 Doze 兼容调度
  5. 使用 adb 测试 — 强制进入 Doze 模式并验证工作是否在满足约束时执行

核心能力

领域技术
可推迟工作WorkManager 2.10, OneTimeWorkRequest, PeriodicWorkRequest
前台前台服务类型 (dataSync, location, mediaPlayback, shortService)
约束NetworkType, BatteryNotLow, StorageNotLow, DeviceIdle
链式任务WorkContinuation, parallel chains, unique work policies
测试TestWorkerBuilder, TestListenableWorkerBuilder, WorkManagerTestInitHelper

架构模式

WorkManager 决策树

任务是由用户发起且需要完成吗?
  ├─ 是 → 是短任务(< 10 分钟)吗?
  │   ├─ 是 → 前台服务(shortService 类型)
  │   └─ 否 → 前台服务(dataSync, location 等)
  │
  └─ 否 → 是否可以推迟?
      ├─ 是 → WorkManager
      │   ├─ 一次性的? → OneTimeWorkRequest
      │   └─ 周期性的? → PeriodicWorkRequest(最小间隔 15 分钟)
      │
      └─ 否 → 应用在前台可见时执行?
          ├─ 是 → CoroutineScope (viewModelScope 或 lifecycleScope)
          └─ 否 → 你可能还是需要使用 WorkManager

带有重试和进度的 CoroutineWorker

@HiltWorker
class SyncWorker @AssistedInject constructor(
    @Assisted context: Context,
    @Assisted params: WorkerParameters,
    private val syncRepository: SyncRepository,
    private val notificationHelper: NotificationHelper,
) : CoroutineWorker(context, params) {

    override suspend fun doWork(): Result {
        // 报告进度供 UI 观察
        setProgress(workDataOf("progress" to 0))

        return try {
            val pendingItems = syncRepository.getPendingChanges()

            pendingItems.forEachIndexed { index, item ->
                syncRepository.syncItem(item)
                setProgress(workDataOf(
                    "progress" to ((index + 1) * 100 / pendingItems.size)
                ))
            }

            Result.success(workDataOf("synced" to pendingItems.size))
        } catch (e: IOException) {
            if (runAttemptCount < 3) {
                Result.retry()  // 默认指数退避
            } else {
                Result.failure(workDataOf("error" to e.message))
            }
        }
    }

    override suspend fun getForegroundInfo(): ForegroundInfo {
        return ForegroundInfo(
            NOTIFICATION_ID,
            notificationHelper.createSyncNotification()
        )
    }
}

带约束和链式任务的调度

// 每 1 小时(最小 15 分钟)调度一次周期性同步
val syncRequest = PeriodicWorkRequestBuilder<SyncWorker>(1, TimeUnit.HOURS)
    .setConstraints(
        Constraints.Builder()
            .setRequiredNetworkType(NetworkType.CONNECTED)
            .setRequiresBatteryNotLow(true)
            .build()
    )
    .setBackoffCriteria(
        BackoffPolicy.EXPONENTIAL,
        WorkRequest.MIN_BACKOFF_MILLIS,
        TimeUnit.MILLISECONDS
    )
    .addTag("sync")
    .build()

WorkManager.getInstance(context).enqueueUniquePeriodicWork(
    "periodic-sync",
    ExistingPeriodicWorkPolicy.KEEP,  // 如果已调度则不重新启动
    syncRequest
)

// 链式任务:下载 → 处理 → 上传(顺序执行)
WorkManager.getInstance(context)
    .beginWith(downloadWork)
    .then(processWork)
    .then(uploadWork)
    .enqueue()

反模式

  1. 对可推迟工作使用 AlarmManager — AlarmManager 的闹钟不兼容 Doze 模式且消耗电池。请使用 WorkManager,它会尊重 Doze、App Standby 和电池节省模式。
  2. 没有前台通知的后台服务 — Android 12+ 会杀死后台服务。请使用带有正确类型声明的前台服务或 WorkManager。
  3. 间隔小于 15 分钟的 PeriodicWork — WorkManager 强制要求最小间隔为 15 分钟。如需更频繁的工作,请使用前台服务或具有生命周期感知的协程。
  4. 未声明前台服务类型 — Android 14+ 要求在 Manifest 中明确声明 foregroundServiceType。省略会导致 SecurityException。
  5. 忽略工作观察 — 启动工作但不向用户显示进度。通过 getWorkInfoByIdLiveData() 或 getWorkInfoByIdFlow() 观察 WorkInfo 来更新 UI。

质量检查清单

[ ] 使用 WorkManager 处理可推迟的后台任务(非 AlarmManager)
[ ] 在 AndroidManifest 中声明了正确的 Foreground Service 类型
[ ] 配置了约束(网络、电池、存储)
[ ] 为临时故障设置了带退避的重试策略
[ ] 为周期性/一次性工作设置了唯一工作策略
[ ] 工作进度可从 UI 观察
[ ] 通过 adb 测试了 Doze 模式:`adb shell dumpsys deviceidle force-idle`
[ ] 测试了电池优化:`adb shell am set-inactive <package> true`
[ ] 使用 TestWorkerBuilder 测试了 Worker
[ ] 为前台服务通知创建了通知渠道
[ ] 工作链优雅地处理了部分失败
[ ] 后台工作尊重用户的电池节省器偏好

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

curiositech/windags-skills

Expert in 2000s-era music visualization (Milkdrop, AVS, Geiss) and modern WebGL implementations. Specializes in Butterchurn integration, Web Audio API AnalyserNode FFT data, GLSL shaders for audio-reactive visuals, and psychedelic generative art. Activate on "Milkdrop", "music visualization", "WebGL visualizer", "Butterchurn", "audio reactive", "FFT visualization", "spectrum analyzer". NOT for simple bar charts/waveforms (use basic canvas), video editing, or non-audio visuals.

curiositech/windags-skills

Expert legal research agent for finding and scraping expungement data state by state. Knows authoritative sources, URL patterns, Firecrawl configuration, and 2026 legal landscape.

curiositech/windags-skills

Expert in 3D computer vision labeling tools, workflows, and AI-assisted annotation for LiDAR, point clouds, and sensor fusion. Covers SAM4D/Point-SAM, human-in-the-loop architectures, and vertical-specific training strategies. Activate on '3D labeling', 'point cloud annotation', 'LiDAR labeling', 'SAM 3D', 'SAM4D', 'sensor fusion annotation', '3D bounding box', 'semantic segmentation point cloud'. NOT for 2D image labeling (use clip-aware-embeddings), general ML training (use ml-engineer), video annotation without 3D (use computer-vision-pipeline), or VLM prompt engineering (use prompt-engineer).

curiositech/windags-skills

Implement WCAG 2.2 AA/AAA compliance with automated testing, keyboard navigation, screen reader support, and focus management. Activate on: accessibility audit, WCAG compliance, keyboard navigation, screen reader, aria attributes, axe-core, focus trap. NOT for: design-level accessibility review (use design-accessibility-auditor), color contrast only (use css-in-js-architect).

curiositech/windags-skills

Time-blind friendly planning, executive function support, and daily structure for ADHD brains. Specializes in realistic time estimation, dopamine-aware task design, and building systems that actually work for neurodivergent minds.

curiositech/windags-skills

Designs digital experiences for ADHD brains using neuroscience research and UX principles. Expert in reducing cognitive load, time blindness solutions, dopamine-driven engagement, and compassionate design patterns. Activate on 'ADHD design', 'cognitive load', 'accessibility', 'neurodivergent UX', 'time blindness', 'dopamine-driven', 'executive function'. NOT for general accessibility (WCAG only), neurotypical UX design, or simple UI styling without ADHD context.

curiositech/windags-skills

>- Apply crisis decision-making research to agent routing, uncertainty triage, and coordination failure analysis in time-pressured systems. Use when diagnosing handoff failures, analytical paralysis, or expert judgment under incomplete information. NOT for routine coding, simple CRUD design, or static single-agent tasks with complete information.

curiositech/windags-skills

Extend and modify the admin dashboard, developer portal, and operations console. Use when adding new admin tabs, metrics, monitoring features, or internal tools. Activates for dashboard development, analytics, user management, and internal tooling.

curiositech/windags-skills

Conversation patterns and interaction protocols for multi-agent systems. Covers request/response, pub/sub, blackboard, delegation chains, debate, critique, consensus, fan-out/fan-in, supervisor-worker, and peer negotiation. Deep analysis of AutoGen conversation patterns, CrewAI delegation, LangGraph state passing, and FIPA-ACL performatives. Teaches how to design what agents say to each other and in what order. Activate on: "agent conversation", "agent protocol", "multi-agent debate", "agent delegation", "supervisor worker pattern", "agent voting", "consensus protocol", "fan-out fan-in", "agent negotiation", "blackboard pattern", "agent dialogue", "conversation topology", "agent handoff". NOT for: wire format or serialization (use agent-interchange-formats), orchestration infrastructure (use agentic-infrastructure-2026), single agent behavior (use agentic-patterns).

curiositech/windags-skills

Meta-agent for creating new custom agents, skills, and MCP integrations. Expert in agent design, MCP development, skill architecture, and rapid prototyping. Activate on 'create agent', 'new skill', 'MCP server', 'custom tool', 'agent design'. NOT for using existing agents (invoke them directly), general coding (use language-specific skills), or infrastructure setup (use deployment-engineer).

curiositech/windags-skills

AI-powered calendar management and agent-based scheduling coordination. Covers calendar APIs (Google Calendar, CalDAV/iCal), AI scheduling assistants (Reclaim, Clockwise, Motion, Cal.com), building custom calendar agents with MCP, multi-calendar merging, timezone management, focus block protection, meeting fatigue detection, and agent-to-agent meeting negotiation protocols. Activate on: "calendar agent", "AI scheduling", "calendar coordination", "meeting scheduling", "calendar API", "focus time protection", "calendar optimization", "Google Calendar MCP", "Reclaim", "Clockwise", "Motion", "Cal.com", "smart scheduling", "calendar-aware agent", "timezone scheduling", "agent negotiation meetings". NOT for: manual calendar UI component design (use form-validation-architect), project management scheduling or Gantt charts (use project-management-guru-adhd), general time-tracking or pomodoro apps (use adhd-daily-planner for time-awareness), building the agent itself from scratch (use agent-creator).

curiositech/windags-skills

Build and adopt production AI agent infrastructure in 2026. Covers framework selection (LangGraph, CrewAI, AutoGen, MCP), orchestration patterns, evaluation, observability, memory systems, and tool use. Also covers the SOCIAL dimension: how to sell agent infrastructure internally, change management, measuring ROI, building trust in autonomous systems, and scaling adoption across teams. Activate on: "agent infrastructure", "agent framework comparison", "which agent framework", "sell AI tools internally", "agent adoption", "agent observability", "agent evaluation", "MCP architecture", "agentic mesh", "enterprise AI agents", "AI change management", "agent ROI". NOT for: building specific agents (use ai-engineer), designing agent behavior patterns (use agentic-patterns), prompt tuning (use prompt-engineer).

curiositech/windags-skills

Fundamental patterns for effective agentic behavior. Teaches decomposition, tool orchestration, error recovery, context management, quality self-assessment, and knowing when to stop. Model-agnostic principles that make any agent more effective regardless of domain. Activate on: "how should I structure this agent", "agentic workflow", "agent patterns", "multi-step task", "tool orchestration", "/agentic-patterns", "decompose this", "agent best practices", "chain of actions", "when should the agent stop", "agent loop design". NOT for: creating agent infrastructure (use agent-creator), building DAGs (use windags-architect), specific tool implementation.

curiositech/windags-skills

Automated discovery and matching of agent skills for dynamic task routing and capability assessment

curiositech/windags-skills

Cryptographic security for agentic systems — zero-trust agent networking, signed message envelopes (JWS/JWE), capability-based security (ocaps), Merkle tree audit trails, WASM sandboxing, and formal verification. Covers CLI dev tool security, mTLS between agents, permission boundaries (least privilege for AI agents), and supply chain security for skills/plugins. Activate on: "agent security", "zero trust agents", "secure agent communication", "capability-based security", "ocap", "signed messages between agents", "agent audit trail", "sandbox agent execution", "agent permissions", "mTLS agents", "cryptographic verification", "agent supply chain", "OWASP agentic", "prove agent did X", "tamper-proof agent logs". NOT for: application-level SAST scanning (use security-auditor), network firewall rules (use infrastructure), SOC2/HIPAA compliance (organizational), or prompt injection defense (use prompt-engineer).

curiositech/windags-skills

Data structures and serialization formats for agent-to-agent communication. Covers message envelopes, structured output schemas, capability declarations, task handoff payloads, error/retry signaling, and context windows as data structures. Deep comparison of A2A protocol, MCP, OpenAI function calling, and LangChain message types. Teaches when to use rigid schemas vs free-form with validation, typed vs untyped, streaming vs batch. Activate on: "agent message format", "agent communication schema", "agent-to-agent protocol", "A2A protocol", "MCP message format", "structured output for agents", "agent interop", "interchange format", "agent serialization", "task handoff format", "capability declaration". NOT for: what agents say to each other (use agent-conversation-protocols), orchestration topology (use multi-agent-coordination), building agent infrastructure (use agentic-infrastructure-2026).

curiositech/windags-skills

Logic-based agent programming language implementing BDI architecture for practical autonomous agent development

curiositech/windags-skills

>- Design AgentSpeak(L)-style BDI agents with context-guarded plans, selection functions, and intention stacks. Use for interruptible autonomy, agent policy, and multi-agent orchestration in dynamic environments. NOT for simple rule engines, static planners, or centralized workflows.

curiositech/windags-skills

Foundational concurrent computation model where actors communicate exclusively through asynchronous message passing

curiositech/windags-skills

license: Apache-2.0 NOT for unrelated tasks outside this domain.

相关技能