2015-02-11 1 views
1

Моя задача состоит в том, чтобы вызвать службу для каждого 24 часов и выше на основе настроек ...Android Manager Alarm непоследовательно 4.4.x.What является альтернативным решением для поддержки minSDKVersion 9 и targetSdkVersion 21

Следующий код отлично работает в течение 5 минут, 2 часа, но не работает в течение долгих часов, таких как 24 часа и выше в Moto E 4.4.4, samsung S4 4.4.2 и Nexus5 4.5 ..

Следующий код даже не работает в течение 5 минут в Xiaomi Mi3 4.4.2, также аварийный сигнал отсутствует в аварийной свалке.

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { 
    am2.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
     SystemClock.elapsedRealtime() + 86400000, pi); 
} else { 
    am2.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
     SystemClock.elapsedRealtime() + 86400000, pi); 
} 

Мои Строительные настройки: - андроид: minSdkVersion = "9" андроид: targetSdkVersion = "21" с использованием 4.4.2 SDK для создания APK ...

После проверки ссылок API я пришел узнать, что сигнал тревоги является несовместимостью с Android 4.4x и выше ... Как сделать точную сигнализацию совместимой с minSdkVersion 9-19 и выше. Я трачу больше времени на анализ и отладку, так как я должен ждать 24 часа и более, чтобы проверить звонок службы сигнализации. указательных или решения было бы очень полезно, и

" https://developer.android.com/about/versions/android-4.4.html http://developer.android.com/reference/android/app/AlarmManager.html Примечания: Менеджер сигнализации предназначен для случаев, когда вы хотите, чтобы ваш код запуска приложения в определенное время, даже если приложение не в настоящее время работает. Для обычных операций синхронизации (тиков, тайм-аутов и т. д.) проще и эффективнее использовать Handler. Примечание: доставка с помощью API 19 (KITKAT) неточна: ОС сбрасывает аварийные сигналы, чтобы минимизировать пробуждения и использование батареи. Появились новые API-интерфейсы для поддержки приложений, требующих строгих гарантий доставки, см. setWindow (int, long, long, PendingIntent) и setExact (int, long, PendingIntent). e targetSdkVersion ранее, чем API 19, будет продолжать видеть предыдущее поведение, при котором все аварийные сигналы доставляются точно по запросу. "

ответ