gpt4 book ai didi

Android AlarmManager 不断关闭

转载 作者:行者123 更新时间:2023-11-29 02:01:12 25 4
gpt4 key购买 nike

我正在为我的计时器使用 AlarmManager。我有2节课。

在第一个类 (MainActivity) 中,我用下一个代码启动闹钟:

public void startAlarm(long Seconds) {
Intent myIntent = new Intent(MainActivity.this, MyAlarmService.class);
pendingIntent = PendingIntent.getService(MainActivity.this, 13141337,
myIntent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, (int) Seconds);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
pendingIntent);
}

在另一个类 (AlarmSound) 中,闹钟响起并且手机振动,我正在调用我的取消闹钟方法。

public void stopAlarm(){
Intent intentstop = new Intent(AlarmSound.this, MyAlarmService.class);
PendingIntent senderstop = PendingIntent.getBroadcast(AlarmSound.this,
13141337, intentstop, 0);
AlarmManager myalarm = (AlarmManager) getSystemService(ALARM_SERVICE);
myalarm.cancel(senderstop);
Log.w("Karl","stopAlarm?");
}

这是执行此操作的正确方法吗?因为我的闹钟在 android 4.1 上不断响起。

提前致谢!

最佳答案

您的取消不起作用。挂起的 Intent 必须匹配 - 因为它们有不同的上下文(MainActivity 和 AlarmSound),所以取消不会起作用。您还必须在两者上都使用 getService。你可以

a) 尝试重新创建一个匹配的未决 Intent

b) 在Service中获取启动Service的pendingIntent并用它来取消

但如果您不使用 setRepeating(),通常每个闹钟只会响一次。

您确定您使用 stopself() 正确终止了您的服务并在 onStartCommand() 方法中为其提供了正确的标志吗?

关于Android AlarmManager 不断关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12598913/

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