Broadcastreceiver呼叫延迟

时间:2016-07-25 11:42:29

标签: android broadcastreceiver alarmmanager

我在某个时间输入上调用BroadcastReceiver,但是我在onReceive of Broadcast上有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");

1 个答案:

答案 0 :(得分:2)

  

注意:从API 19(KITKAT)开始,警报传递不准确:操作系统将移动警报以最小化唤醒和电池使用。有新的API支持需要严格交付保证的应用程序;请参阅setWindow(int,long,long,PendingIntent)和setExact(int,long,PendingIntent)。 targetSdkVersion早于API 19的应用程序将继续查看之前的行为,其中所有警报都在请求时准确传递。   https://developer.android.com/reference/android/app/AlarmManager.html

如果没有延迟非常重要,请对API 19,20和21使用setExact,并对API 23和24使用setExactAndAllowWhileIdle