К сожалению, как показывают другие ответы, установленная вами задержка (или частота дискретизации) является всего лишь предложением (для системы) минимума, требуемого вашим приложением, однако, это может кардинально измениться в зависимости от запущенных других приложений или входа вашего устройствав режимах энергосбережения (выключение процессора и т. д.).Один из способов получить хорошую частоту дискретизации - записать мои данные из службы, сделать службу приоритетной и иметь блокировку питания с флагом PARTIAL_WAKE_LOCK.
Я поместил код в эту суть https://gist.github.com/julian-ramos/6ee7ad8a74ee4b442530
В этой сути гораздо больше кода, чем вам нужно, но просто обратите внимание на следующие два метода
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// //Power management
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");
wl.acquire();
.....}
Приведенный выше код запрещает ОС отключать процессор
Теперь, чтобы сделать эту службу приоритетной службой
NotificationCompat.Builder notificationBuilder =
new NotificationCompat.Builder(getApplicationContext())
.setContentTitle("Title")
.setContentText("hola")
.setContentIntent(viewPendingIntent);
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
not=notificationBuilder.build();
notificationManager.notify(notificationId,not );
startForeground(notificationId, not);
Приведенный выше код делает службу приоритетной для ОС в отличие от обычной службы.Примерами службы переднего плана являются, например, музыкальные проигрыватели.
С помощью этого кода я смог получить необходимую частоту дискретизации даже после автоматического выключения часов.