为什么服务不能“立即”起作用?

时间:2017-07-03 14:27:27

标签: android alarmmanager android-pendingintent intentservice

我只是开始服务的功能,并重复他:

mAlarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);

PendingIntent pIntent = PendingIntent.getService(mContext,
                SendStatusService.SEND_STATUS_SERVICE_CODE,
                mIntent,
                PendingIntent.FLAG_UPDATE_CURRENT);

mAlarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
                SystemClock.elapsedRealtime() + 2000,
                mIntervalInMs,
                pIntent);

我理解文档:警报管理器无论设备状态(睡眠与否)都会在2000毫秒内启动服务,并以间隔mIntervalInMs重复。

但运行此代码后30-50秒后服务开始工作。我弄错了什么或者不理解文档?

1 个答案:

答案 0 :(得分:1)

setRepeating()"不精确"在API Level 19+ Android设备上运行时,targetSdkVersion为19或更高。因此,您的结果并不令人惊讶。事件将发生在所需时间的某个地方(直到Android 6.0的Doze模式启动),但它们不会在所需的时间完全发生。