资源不足时设置任务优先级或禁用任务运行

时间:2014-06-24 08:09:55

标签: android performance timertask

我正在运行后台计时器任务,每小时执行一些计算工作。我的问题是,如果我能以某种方式将任务设置为以低于其他任务的优先级运行。或者,如果资源不足(例如,内存低于50%,电池低于30%,CPU高于60%),则可以跳过任务运行。只要我稳定运行,每次计算都不是强制性的。

你可以建议我这样做的方法吗?我真的不想让我的应用搞砸用户的体验,特别是当用户正在玩游戏,听音乐,看电影等时。

1 个答案:

答案 0 :(得分:2)

有多种方法可以节省资源:

  1. 在创建后调用setPriority(Thread.MIN_PRIORITY)的额外主题中执行您的工作。这样,您的线程将以最低优先级进行调度。每小时唤醒一次这个帖子。

  2. 考虑使用AlarmManager.setInexactRepeating(AlarmManager.INTERVAL_HOUR)唤醒您的应用以进行工作。这节省了能量,因为“系统可以调整警报的交付时间,使它们同时发射,避免将设备从睡眠状态唤醒到超过必要的程度。”

  3. 您可以使用ActivityManager.getMyMemoryState()来确定系统内存是否紧张。如果此次调用填充的lastTrimLevel对象的字段ActivityManager.RunningAppProcessInfoTRIM_MEMORY_RUNNING_CRITICALTRIM_MEMORY_RUNNING_LOW,则应跳过执行任务。