我有两个广播接收器按计划运行:
mAlarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + 1000, 20000, shortNotification);
mAlarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + 30000, 30000, breakNotification);
其中shortNotification和breakNotification:
breakNotification = PendingIntent.getBroadcast(this, 0, intentBreak, 0);
shortNotification = PendingIntent.getBroadcast(this, 0, intentShort, 0);
和intentBreak,intentShort是:
intentShort = new Intent(this, ShortBreakBroadcast.class);
intentBreak = new Intent(this, LongBreakBroadcast.class);
使用另一个答案(https://stackoverflow.com/a/7439072/4132650)我试图在关闭应用程序时停止onDestroy中的两个广播接收器(通过向左滑动,而不是按下主页按钮),但它没有工作:
TimerViewActivity.this.getPackageManager().setComponentEnabledSetting(shortBreakComponent, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
TimerViewActivity.this.getPackageManager().setComponentEnabledSetting(longBreakComponent, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
如何让它们停止?
我的应用有2个闹钟。 1表示短暂提醒,而第2表示提醒用户休息10分钟(这些时间缩短以进行测试)。两个警报都启动广播接收器:第一个启动短暂中断接收器,10分钟中断启动第二个不同的接收器。我跟踪用户是否使用加速度计进行了10分钟的休息。两个接收器都发送通知并开始播放音乐10秒钟。
当我关闭应用程序时,我希望所有进程都停止运行:通知,音乐,广播接收器和加速度计。 这并不会发生,因为显然两个接收器仍在运行并启动上述过程。
以下是Github链接:https://github.com/felixglusch/AccelTimer