gpt4 book ai didi

android - 如何判断 Android 重复闹钟的年龄?

转载 作者:行者123 更新时间:2023-11-29 22:21:17 26 4
gpt4 key购买 nike

我有一个 setRepeating() 闹钟计划,如果它达到一定年龄,我想在它的 BroadcastReceiver 中禁用它。我宁愿在 BroadcastReceiver 中禁用它,所以如果可能的话,那将是我的第一选择。

在我的 Activity 中:

// Start our alarm
Intent intent = new Intent(Main.this, Receiver.class);

long firstTime = SystemClock.elapsedRealtime();
firstTime += 2 * 1000; // start in 2 seconds
long interval = 2000; // 2 seconds for testing

intent.putExtra("start", firstTime); // Tell the receiver the creation date (not working)

PendingIntent sender = PendingIntent.getBroadcast(Main.this, 0, intent, 0);

// Schedule the alarm!
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, interval, sender);

在我的 BroadcastReceiver 中:

@Override
public void onReceive(Context context, Intent intent) {
// ... alarm stuff
long now = SystemClock.elapsedRealtime();
Log.i("", "Alarm Running for " + (now - intent.getLongExtra("start", now)));
//getLongExtra() defaults to 'now' because there is no extra 'start'
}

在 LogCat 中我看到了这个..

08-19 11:01:04.420: INFO/(1371): Alarm Running for 0
08-19 11:01:06.420: INFO/(1371): Alarm Running for 0
08-19 11:01:08.430: INFO/(1371): Alarm Running for 0
08-19 11:01:10.420: INFO/(1371): Alarm Running for 0
08-19 11:01:12.419: INFO/(1371): Alarm Running for 0
08-19 11:01:14.419: INFO/(1371): Alarm Running for 0
08-19 11:01:16.420: INFO/(1371): Alarm Running for 0
08-19 11:01:18.420: INFO/(1371): Alarm Running for 0

现在这对我来说意味着 Intent 不包含我用 putExtra() 给它的额外的“开始”。

如何通过 intent extras 或其他方法判断警报的存在时间?

编辑:我可以通过创建一个 static int 并在每次执行警报代码时递增它来找出 Receiving 类接收了多少次广播,但这不是查找的好方法“年龄”。

更新:结合Mobius提供的答案,您还必须在PendingIntent.getBroadcast()中传递PendingIntent.FLAG_UPDATE_CURRENT,如下所示:

PendingIntent sender = PendingIntent.getBroadcast(Main.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

最佳答案

您尝试过使用 Bundle 吗?

在 onReceive() 中

Bundle myBundle = intent.getExtras();
if (myBundle != null) {
long startTime = myBundle.get("start");
}

关于android - 如何判断 Android 重复闹钟的年龄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7124376/

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