如何确保在Android中只有一个给定的活动



我不确定什么是应用程序的最佳实现,该应用程序应该定期检查某些条件,并在满足条件时发出警报。

假设我的主要活动CCD_开始"-按钮,该按钮启动每秒检查一次条件的前台服务CCD_。如果满足该条件,则新的活动AlarmActivity具有"0">停止报警"-按钮,应该启动,并且也应该启动周期性的嘟嘟声。如果用户按下">停止警报";,则CCD_ 4应被破坏并且CCD_。

现在可能有几个不寻常的用例需要我注意:

  1. 用户可以(意外地或故意地(关闭CCD_ 6停止报警";按钮,或者它可能会被系统关闭,因为它在后台的时间太长了。在这种情况下,用户应该能够通过单击应用程序图标或CheckConditionService的前台通知来重新打开AlarmActivity
  2. 另一方面,单击其中一个不应创建同时打开多个AlarmActivity的状态
  3. 也许我忘记了其他一些需要注意的异常行为?欢迎提出建议

问题:最好、最干净的方法是什么?如果条件满足并且警报应该启动,MainActivity0应该调用什么?CCD_ 11在CCD_。以查明当前是否发出警报,并且因此应当启动CCD_ 13和2。是否已经打开AlarmActivity,如果是,则不打开AlarmActivity的第二个实例,而是打开现有实例?

  1. 创建ForegroundService
  2. 如果要检查条件状态,请创建一个静态变量,可能是Boolean类型,例如:CheckConditionService.isConditionMet
    请确保在该服务中运行的任何任务中使用Update
  3. 根据CheckConditionService0返回的结果,使用SplashScreen确定应打开哪个"活动">
    这是一篇不错的文章:https://medium.com/@shishirdev/the-right-way-to-implementation-asplashscreen-in-android-aae0e52949a
  4. 为了防止意外关闭AlarmActivity,您可以禁用onBackPressed()
    但是用户始终可以通过Home Button移动或滑动离开(较新版本中的手势(
    3点在那里很方便
  5. 对于仅使用AlarmActivity的一个实例或单个状态,
    请在Manifest中为该活动使用singleTask标志

相关内容

最新更新