gpt4 book ai didi

java - 为什么用AlarmManager为它设置PendingIntent时,请求的组件立即被调用?

转载 作者:搜寻专家 更新时间:2023-11-01 09:03:47 25 4
gpt4 key购买 nike

在我的应用程序中,我将一个以毫秒为单位的时间传递给下面的这个方法,但是当这个方法被调用时,我在我的 list 中为此 Intent 注册的 BroadCastReciever 被立即调用,甚至在它开始的时候关闭音频播放。 (BroadcastReciever 的目的是停止音频播放,但在选定的时间通过以下方法传递给 alarmmanager...)

我尝试过类似的配置,包括 getService,但在为该组件设置警报管理器时,即使该组件仍然会立即被调用。

我偶尔会收到空指针异常的 ANR,因为停止播放的 BroadcastReciever 会尝试停止甚至还没有初始化的 MediaPlayer 对象,因为停止播放的 pendingintent 在设置时会立即被调用。

private void makeAlarm(long timeInFuture){
Intent INTENT = new Intent("myapp.stopplayback");
AlarmManager alarmManager=(AlarmManager)this.getSystemService(Context.ALARM_SERVICE);

PendingIntent pi = PendingIntent.getBroadcast(this, 0, INTENT, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP, timeInFuture, pi);
}

最佳答案

写在docs :

triggerAtTime Time the alarm should go off, using the appropriate clock (depending on the alarm type)

因此,您应该提供实时的警报。如果你想在一分钟后报警,提供

System.currentTimeMillis() + 60*1000;

关于java - 为什么用AlarmManager为它设置PendingIntent时,请求的组件立即被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13410463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com