2016-07-25 158 views
0

我在某些時間輸入上呼叫BroadcastReceiver,但我在廣播的onReceive中收到10-15秒的延遲。廣播接收器呼叫延遲

Activity.class

Intent intent = new Intent(DashboardActivity.this, TimeAlarm.class); 
    PendingIntent pendingIntent = PendingIntent.getBroadcast(DashboardActivity.this, 0, intent, PendingIntent.FLAG_ONE_SHOT); 
    alarmManager.set(AlarmManager.RTC_WAKEUP, timeinMillis, pendingIntent); 

TimeAlarm.class

public class TimeAlarm extends BroadcastReceiver { 

@Override 
public void onReceive(final Context context, Intent intent) { 

    Debug.e("RECEIVER_TIME", "ALARM_READY"); 
+0

什麼是'timeinMillis'什麼android版是你繼續? –

+0

timeinMillis是當我調用BroadcastReceiver時在4.4和5.0的Android和未在其他版本上測試時的警報時間 - 我得到延遲。 –

回答

1

注:與API開始19(KITKAT)報警輸送是不精確的:所述操作系統將按順序移動警報o儘量減少喚醒和電池使用。有新的API支持需要嚴格交付保證的應用程序;請參閱setWindow(int,long,long,PendingIntent)和setExact(int,long,PendingIntent)。 targetSdkVersion早於API 19的應用程序將繼續看到之前的行爲,即所有報警在請求時都準確傳送。 https://developer.android.com/reference/android/app/AlarmManager.html

如果它真的很重要,沒有延遲,使用setExact的API 19,20和21,並使用setExactAndAllowWhileIdle的API 23和24

+0

這個工作適合你嗎? –