您的位置:首页 > 移动开发 > Android开发

在Android5.0.2机子上采用AlarmManager轮询失败

2016-02-29 14:10 477 查看
测试机是android5.0.2系统,我采用的是AlarmManager的方法进行轮询,轮询的方法如下:

public static void startPollingService(Context context, long seconds, Class<?> cls,String action) {
//获取AlarmManager系统服务
AlarmManager manager = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);

//包装需要执行Service的Intent
Intent intent = new Intent(context, cls);
intent.setAction(action);
PendingIntent pendingIntent = PendingIntent.getService(context, 0,
intent, PendingIntent.FLAG_UPDATE_CURRENT);

//触发服务的起始时间
long triggerAtTime = SystemClock.elapsedRealtime();
//   long triggerAtTime = System.currentTimeMillis();
//使用AlarmManger的setRepeating方法设置定期执行的时间间隔(seconds秒)和需要执行的Service
manager.setRepeating(AlarmManager.ELAPSED_REALTIME, triggerAtTime,
seconds * 100, pendingIntent);
}


//停止轮询服务
public static void stopPollingService(Context context, Class<?> cls,String action) {
AlarmManager manager = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, cls);
intent.setAction(action);
PendingIntent pendingIntent = PendingIntent.getService(context, 0,
intent, PendingIntent.FLAG_UPDATE_CURRENT);

//取消正在执行的服务
manager.cancel(pendingIntent);
}


在android4.1.2和android4.4的机子上测试没有问题。

如果android5.0.2插上USB,这个轮询方法也能正常执行。但是如果拔掉USB,轮询方法将会每4分钟左右才执行,无论我设置的是多少分钟。

调试了3天没找到答案,为了项目进度,后来采用Timer+timertask进行完成轮询操作。

这个问题在这里先记录一下。如果有知道答案的请告诉我一下,感激不尽。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: