我有一个未取消的未决意图。我登录我的应用程序时启动该服务,当他们注销时我停止它。下面的代码位于我的应用程序类中。这是它适合去的地方吗?我试图将它放在我所拥有的MainActivity中,但在Application中具有相同的结果。
private PendingIntent mJobPendingIntent;
private final int RQSNUM_SIP = 1337;
public void startJob(){
LogText.appendLog(TAG + " startJob");
Intent intent = new Intent(this, JobReceiver.class);
mJobPendingIntent = PendingIntent.getBroadcast(this, RQSNUM_SIP, intent, PendingIntent.FLAG_ONE_SHOT);
((AlarmManager) this.getSystemService(Context.ALARM_SERVICE)).setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP
, SystemClock.elapsedRealtime()+7000
, 7000
, mJobPendingIntent);
}
public void stopSipJob(){
((AlarmManager) this.getSystemService(Context.ALARM_SERVICE)).cancel(mJobPendingIntent);
LogText.appendLog(TAG + " stopJob");
}
我知道停止工作被调用但是在我注销并调用停止工作后,我会在手机上查看我的设置并看到该过程仍在运行。
如何停止此警报?
感谢您的帮助
答案 0 :(得分:0)
我认为你应该再次在stopSipJob()
上创建PendingIntentpublic void stopSipJob(){
Intent intent = new Intent(this, JobReceiver.class);
mJobPendingIntent = PendingIntent.getBroadcast(this, RQSNUM_SIP, intent, PendingIntent.FLAG_ONE_SHOT);
((AlarmManager) this.getSystemService(Context.ALARM_SERVICE)).cancel(mJobPendingIntent);
LogText.appendLog(TAG + " stopJob");
}
答案 1 :(得分:0)
从//label[contains(.,'Family')]
的通话中删除PendingIntent.FLAG_ONE_SHOT
。这导致了你的问题。