我不确定什么是应用程序的最佳实现,该应用程序应该定期检查某些条件,并在满足条件时发出警报。
假设我的主要活动CCD_开始"-按钮,该按钮启动每秒检查一次条件的前台服务CCD_。如果满足该条件,则新的活动AlarmActivity
具有"0">停止报警"-按钮,应该启动,并且也应该启动周期性的嘟嘟声。如果用户按下">停止警报";,则CCD_ 4应被破坏并且CCD_。
现在可能有几个不寻常的用例需要我注意:
- 用户可以(意外地或故意地(关闭CCD_ 6停止报警";按钮,或者它可能会被系统关闭,因为它在后台的时间太长了。在这种情况下,用户应该能够通过单击应用程序图标或
CheckConditionService
的前台通知来重新打开AlarmActivity
- 另一方面,单击其中一个不应创建同时打开多个
AlarmActivity
的状态 - 也许我忘记了其他一些需要注意的异常行为?欢迎提出建议
问题:最好、最干净的方法是什么?如果条件满足并且警报应该启动,MainActivity
0应该调用什么?CCD_ 11在CCD_。以查明当前是否发出警报,并且因此应当启动CCD_ 13和2。是否已经打开AlarmActivity
,如果是,则不打开AlarmActivity
的第二个实例,而是打开现有实例?
- 创建
ForegroundService
- 如果要检查条件状态,请创建一个静态变量,可能是
Boolean
类型,例如:CheckConditionService.isConditionMet
请确保在该服务中运行的任何任务中使用Update
- 根据
CheckConditionService
0返回的结果,使用SplashScreen确定应打开哪个"活动">
这是一篇不错的文章:https://medium.com/@shishirdev/the-right-way-to-implementation-asplashscreen-in-android-aae0e52949a - 为了防止意外关闭
AlarmActivity
,您可以禁用onBackPressed()
,
但是用户始终可以通过Home Button
移动或滑动离开(较新版本中的手势(3
点在那里很方便 - 对于仅使用
AlarmActivity
的一个实例或单个状态,
请在Manifest中为该活动使用singleTask
标志