我的申请中有一个情况。我正在使用闹钟呼叫服务。警报每5分钟唤醒并呼叫该服务。
但可能会发生这样的情况:用户可能会关闭我的应用程序,即使用户没有使用我的应用程序,我也允许该服务的功能正常工作。
要停止服务有两种方式,用户回到应用程序并按下一个按钮取消警报,或者第二种方式是在x时间后我要停止服务,即从广播中取消警报接收机。
现在我该如何做第二种方式?当我试图获得AlarmManager的引用时,它给出了Null指针的错误。 (我从广播接收器访问此报警管理器)
有人可以就如何从活动上下文之外取消重复警报向我提出建议吗?
谢谢:)
答案 0 :(得分:1)
您可以像这样停止服务
context.stopService(new Intent(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);
我希望这可以帮到你
答案 1 :(得分:0)
在你的BroadcastReceiver中试试这个:
public void onReceive(Context context, Intent intent) {
context.stopService(new Intent(context, YourService.class));
}