我有一个非常奇怪的问题,一个cwac-wakeful库和唤醒锁。
在我的应用程序中,我正在使用cwac-wakeful定期从Web服务器下载数据,这非常有效。但是当我在应用程序的某个地方获得唤醒锁时(即使设置的警报被取消),cwac-wakeful开始表现得有点奇怪 - 它在整个小时开始完成每5分钟一次的工作(14:00,14:05)。 ..),无论设定重复间隔。
释放唤醒锁无效,解决此问题的唯一方法是完全重启应用程序。
我知道cwac-wakeful在执行工作时会利用唤醒锁,所以问题就在这里。
这是一个实现 AlarmListener 。
的类public class ServiceWaker implements WakefulIntentService.AlarmListener
{
private static final Logger log = Logger.getLogger(ServiceWaker.class);
public ServiceWaker()
{
log.info("New ServiceWaker");
}
@Override
public void scheduleAlarms(AlarmManager alarmManager, PendingIntent pendingIntent, Context context)
{
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
long syncFrequency = Long.parseLong(prefs.getString("sync_frequency", "1"));
syncFrequency = syncFrequency * 60 * 1000;
log.info("Alarm scheduled with a repeat interval:" + syncFrequency);
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime()+60000, syncFrequency, pendingIntent);
}
@Override
public void sendWakefulWork(Context context)
{
log.info("Sent wakeful work");
WakefulIntentService.sendWakefulWork(context, CheckServiceWakeful.class);
}
@Override
public long getMaxAge()
{
return AlarmManager.INTERVAL_FIFTEEN_MINUTES*2;
}
}
详细说明:
答案 0 :(得分:0)
迟到的回答但是在我找到解决方案之后我忘了发帖。
问题是我的手机中的能源经理。我有3个电池计划:
“智能”计划负责此问题。正如我在某处读到的那样,当设置为活动状态时,系统会尝试批量唤醒锁定和网络任务,因此不会持续唤醒移动设备。因此,我的任务被重新安排了更长的时间,以便每次执行另一项任务 - 例如 - 15分钟。