我的应用程序中有以下方案:
- 广播接收器监听BOOT_COMPLETED动作并设置重复警报。
- Alarm通过PendingIntent启动服务。
- 服务检查一些数据通过互联网,当新的数据可用,显示通知,这是运行一个活动,当用户选择它。
一切都很好,除了一件事。当我从我的设备上的任务管理器关闭应用程序时,进程被杀死,我的闹钟不再工作。因此,该进程将停止,直到下次设备重新启动。
设置android:process为不同的服务和活动没有帮助。调试器显示我们有两个不同的进程,但是从任务管理器中关闭一个应用程序会同时杀死两个进程。
我创建了两个不同的应用程序,一个只是一个活动,另一个是广播接收器和服务。
在这种情况下,一切都在按我的需要工作。但现在我有另一个问题。两个。apk文件。我试图找到一个解决方案,将两个apk合并为一个市场,但看起来是不可能的。要求用户安装两个apk,我认为这不是一个好主意。
所以我的问题是如何解决这个问题?
当我从我的设备上的任务管理器关闭应用程序时,进程被杀死,我的闹钟不再工作。因此,该进程将停止,直到下次设备重新启动。
这是件好事。用户通过杀死或强制停止您的应用程序,表示"我不希望您再次运行"。开发者应该尊重用户的意愿。
所以我的问题是如何解决这个问题?
尊重你的用户,如果他们愿意,允许他们强制停止你的应用。您可以在下次手动运行应用程序时重新启用您的警报。
您还可以检测他们是否这样做了,通过让您的AlarmManager
触发代码跟踪它何时运行——如果,下次用户手动启动您的活动时,您确定警报代码没有运行太长时间,这表明用户强制停止了您。您可以使用这些信息来建议用户访问您的PreferenceActivity
并更改您的警报行为(例如,每24小时运行一次而不是每10分钟运行一次),这样用户就不会觉得有必要强制停止您的应用程序。