gpt4 book ai didi

android - 从 Service 中停止 AlarmManager 但在 Activity 中创建

转载 作者:太空狗 更新时间:2023-10-29 16:39:46 24 4
gpt4 key购买 nike

我按照以下方式创建了一个 AlarmManager。特定时间后,服务将停止并使用 stopSelf(),但 alarmmanager 会再次启动该服务。如何停止服务内的 AlarmManager? Activity 不再运行,我必须在 Service 中执行。

使用 AlarmManager 定期启动服务的 Activity:

Intent i=new Intent(this, AppService.class);
PendingIntent pi = PendingIntent.getService(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

if((tb_runBG.isChecked()))
{
alarmManager.cancel(pi);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 *update_time, pi);
}
else
{
// From Activity it's no problem to stop the AlarmManager
alarmManager.cancel(pi);
stopService(new Intent(this, AppService.class));
}

我尝试停止 AlarmManager 的服务:

Intent i=new Intent(this, volumeActivity.class);                      
PendingIntent pi=PendingIntent.getActivity(this, 0, i, 0);
// Her I should get the getSystemService from the Activity, but how??
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
// Following unfortunately not working ...
alarmManager.cancel(pi);
stopSelf();

不幸的是,它不起作用。 Servive 停止,但它被 AlarmManager 再次调用 ...

编辑:

以下也不起作用:

AlarmManager alarmManager = (AlarmManager) this.getBaseContext().getSystemService(Context.ALARM_SERVICE); 

AlarmManager alarmManager = (AlarmManager) this.getApplicationContext().getSystemService(Context.ALARM_SERVICE);  

最佳答案

我想在设置闹钟和取消闹钟的情况下,PendingIntent 应该相同。在您的情况下,第二个未决 Intent 与第一个不同。您可以在取消代码中尝试以下操作吗?

    PendingIntent pi = PendingIntent.getService(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);

编辑:刚刚注意到,您的 Intent 也不相同。是故意的吗?

关于android - 从 Service 中停止 AlarmManager 但在 Activity 中创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19935485/

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