Android 在应用程序被关闭后停止报警

Android 在应用程序被关闭后停止报警,android,broadcastreceiver,alarmmanager,android-pendingintent,Android,Broadcastreceiver,Alarmmanager,Android Pendingintent,我的申请中有一个情况。我正在使用闹钟呼叫服务。警报每5分钟唤醒一次,并呼叫服务 但是,用户可能会关闭我的应用程序,即使用户没有使用我的应用程序,我也会允许服务的功能工作 要停止服务,有两种方法,一种是用户返回应用程序并按下按钮取消警报,另一种方法是说在x时间后我要停止服务,即从广播接收器取消警报 现在我该怎么做第二种方法?当我试图获取AlarmManager的引用时,它给了我空指针的错误。(我正在从广播接收器访问此报警管理器) 有人能给我建议如何取消活动上下文之外的重复警报吗 谢谢:)在您的广播

我的申请中有一个情况。我正在使用闹钟呼叫服务。警报每5分钟唤醒一次,并呼叫服务

但是,用户可能会关闭我的应用程序,即使用户没有使用我的应用程序,我也会允许服务的功能工作

要停止服务,有两种方法,一种是用户返回应用程序并按下按钮取消警报,另一种方法是说在x时间后我要停止服务,即从广播接收器取消警报

现在我该怎么做第二种方法?当我试图获取AlarmManager的引用时,它给了我空指针的错误。(我正在从广播接收器访问此报警管理器)

有人能给我建议如何取消活动上下文之外的重复警报吗


谢谢:)

在您的广播接收器中尝试以下操作:

      public void onReceive(Context context, Intent intent) {
          context.stopService(new Intent(context, YourService.class));
      }

你可以这样停止你的服务
context.stopService(新意图(context,YourService.class))

此外,为了取消报警,您可以这样做

 Intent intent = new Intent(this, YourClass.class);
 PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 1253, intent, PendingIntent.FLAG_UPDATE_CURRENT| Intent.FILL_IN_DATA);
 AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
 alarmManager.cancel(pendingIntent);

我希望这可能会帮助您

向我展示一些代码和日志……如果您要利用时间来确定何时停止安排报警,您需要将时间保存在某个地方,即使您的应用程序未运行,也会持续,例如
SharedReferences
。您可以简单地存储用户启动警报的时间,并在每次唤醒时检查是否有足够的时间来取消警报。