ios - 什么是处理“打盹”功能的好方法?
问题描述
到目前为止,我已经尝试了一些解决方案,但我不确定是否有“正确”的方法。我正在处理一个带有贪睡功能的待办事项列表。当我需要运行一个函数将其移动到不同的列表中时,每个任务都有一个“从贪睡中唤醒”的时间。
我尝试循环遍历每个任务并在viewWillAppear
和/或viewDidAppear
运行时移动它。这通常有效,但似乎偶尔会失火,并且在应用程序运行且用户未切换视图时不会发生。
我尝试使用该Timer()
功能在实际特定时间移动项目,这仅在应用程序运行时有效。
我尝试使用performFetchWithCompletionHandler
并每小时检查一次在后台移动项目。
还有什么我应该尝试使这个运行更顺利吗?它是所有这些的组合吗?如果是这种情况,我如何确保我不会同时移动两次?
解决方案
一般来说,问题似乎是如何确保某事在某个日期时间发生。
计算出目标日期时间是什么,并将其写在某个稳定的地方(文件、用户默认值等)以及随后发生的事情。
看时钟。每分钟触发一次的计时器可能就足够了。只需看看时钟,看看那个时间是否已经过去。如果有,请执行此操作并删除说明此事件需要在此日期时间发生的信息。
如果应用程序进入后台,请停止计时器。
当应用程序再次出现在前台时,请检查您的日期时间。
如果时间已经过去,请执行此操作并删除说明此操作需要在此日期时间发生的信息。
如果没有,请再次启动计时器并继续观察时钟。
推荐阅读
- testing - Groovy/Grails 字符串中“\”转义字符的扩散
- java - 如何设置“备份”字体
- google-analytics - 在每次 url 更改时跟踪单页应用程序的 GA 页面加载事件
- javascript - react native如何导入在线脚本
- css - Angular 6 Material - 色调和如何更改垫子单选按钮的颜色
- redux-saga - 我可以使用 return 在生成器函数中停止执行吗?
- sql-server - MS-SQL 以两列为轴
- ios - 上传成功后在 iTunes 连接中不可见
- sql - SQL Server - 以相同的方式从列表中分配字符串
- linux - 在不使用 sudo 的情况下更改 root 用户拥有的文件的权限