gpt4 book ai didi

java - Android Studio AlarmManager.cancel() 关闭应用程序

转载 作者:太空宇宙 更新时间:2023-11-04 09:04:09 25 4
gpt4 key购买 nike

我正在制作一个闹钟应用程序,可以使用切换按钮设置闹钟。该代码在ADV中工作,但如果我在真实设备上测试它,应用程序在设置一次闹钟然后将其关闭后立即关闭。闹钟也不会关闭。

(按下 AlarmOn 按钮 -> 闹钟已开启, 按下 AlarmOff 按钮 -> 应用程序关闭 + 闹钟仍然开启)

mStartBtn1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
long time;
if (((ToggleButton) view).isChecked()){ //if button is on
Intent intent = new Intent(MainActivity.this, AlarmReceiverActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 2, intent, PendingIntent.FLAG_CANCEL_CURRENT);

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, timePicker1.getCurrentHour());
calendar.set(Calendar.MINUTE, timePicker1.getCurrentMinute());

time = (calendar.getTimeInMillis() - (calendar.getTimeInMillis() % 60000));
if (System.currentTimeMillis() > time) {
if (calendar.AM_PM == 0)
time = time + (1000 * 60 * 60 * 12);
else
time = time + (1000 * 60 * 60 * 24);
}
am.set(AlarmManager.RTC_WAKEUP, time, pendingIntent); //sets the alarm
}else{ //if button is off
am.cancel(pendingIntent);
}
}
});

感谢您的帮助,

弗洛里安

最佳答案

您的应用程序基本上崩溃了。也许是因为您将 null 传递给 am.cancel(pendingIntent)//这里的pendingIntent 可能为 null。

尝试将 PendingIntentendingIntent = PendingIntent.getActivity(MainActivity.this, 2, Intent, PendingIntent.FLAG_CANCEL_CURRENT); 移到 if 条件之外。如果情况并非如此,请检查 AlarmReceiverActivity 是否发生崩溃。

关于java - Android Studio AlarmManager.cancel() 关闭应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60434101/

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