Android 当应用程序停止时,如何停止报警服务?

Android 当应用程序停止时,如何停止报警服务?,android,service,alarm,Android,Service,Alarm,我有一个带有工作流的应用程序,它可以调用许多活动,其中一些活动会在用户执行过程中完成,而另一些活动会保持活动状态。但我无法关闭我的报警服务,即使启动了home(主页)按钮并关闭了应用程序,该服务仍会继续 哦,当然-强制关闭设置将很好地停止报警服务,这是杀死它的唯一方法。我无法从我的应用程序停止报警,因为没有任何信息告诉我应用程序何时关闭 onDestroy或on Stop work的所有生命周期方法都不适用,因为home(主页)按钮可在15项活动中的任何一项活动期间启动,并且onDestroy在

我有一个带有工作流的应用程序,它可以调用许多活动,其中一些活动会在用户执行过程中完成,而另一些活动会保持活动状态。但我无法关闭我的报警服务,即使启动了home(主页)按钮并关闭了应用程序,该服务仍会继续

哦,当然-强制关闭设置将很好地停止报警服务,这是杀死它的唯一方法。我无法从我的应用程序停止报警,因为没有任何信息告诉我应用程序何时关闭

onDestroy或on Stop work的所有生命周期方法都不适用,因为home(主页)按钮可在15项活动中的任何一项活动期间启动,并且onDestroy在任何活动之后的很长时间内都不会被调用

但我无法关闭我的报警服务,即使启动了home(主页)按钮并关闭了应用程序,该服务仍会继续


然后不要注册警报。AlarmManager设计用于在代码尚未运行时定期执行代码。对于纯在活动中的内容,请使用postDelayed。

当您按下home按钮时,您的应用程序不会关闭,也不应该关闭。通过调用onSaveInstanceStateBundle将其冻结。如果您单击应用程序图标,它将重新启动和恢复,就像系统时钟出现了巨大的暂停一样,或者,如果它被系统关闭,则从您在onSaveInstanceState中设置的捆绑包中重新创建。通常,您会在onPause中启用suspend或cancel与时间相关的活动,因为从某种意义上说,应用程序的时间在该点停止

当应用程序退出时,需要停止警报的原因是什么?我认为,他们的全部目的是在特定的时间调用应用程序中的某些东西,即使它没有运行。

就这样做吧

AlarmManager alarm;
PendingIntent pintent;

 Calendar cal = Calendar.getInstance(); 
 cal.add(Calendar.SECOND, 10);              
 Intent intent = new Intent(this, TestService.class);           
 pintent = PendingIntent.getService(this, 0, intent, 0);
 alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
 int i;
 i=30;
 alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), i* 1000, pintent);
 System.out.println("service going to start-----------");
 startService(new Intent(getBaseContext(), TestService.class));  // Here start your service
如果您想停止服务,意味着您应该停止报警服务一次。在onBackPressed方法中,ok按钮将是finish your activity。在该按钮中,您应该添加以下代码

     alarm.cancel(pintent);
这将在您退出应用程序时停止服务添加警报。祝你一切顺利