当应用程序进入后台时如何继续运行 NSTimer

2023-12-19

我正在创建益智游戏应用程序,并使用 NSTimer 显示时间(即 01:20)。当应用程序进入后台时,NSTimer 会暂停,但即使应用程序处于后台状态,我也想继续它。

例如当应用程序进入后台时,计时器计数为 15 秒 and I 放置5秒现在我成为前台需要将计时器计数更改为 20 秒

我搜索了很多但没有得到好的答案。 所以请建议我如何实现这一目标。


不要将计时器视为用于计时的对象。可以将其视为以给定频率发出脉冲的物体。要测量时间,请记录开始时间并将其与当前时间进行比较。

要记录开始时间,请将其写入文件,如下所示,可能在appWillResignActive中:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];
NSString *filename = [path stringByAppendingPathComponent:@"saveme.dat"];

NSData * data = [NSKeyedArchiver archivedDataWithRootObject:self.startDate];
[data writeToFile:filename atomically:NO];
// invalidate timer

当应用程序将变为活动状态时:

NSData *data = [NSData dataWithContentsOfFile:filename];    // using the same code as before
self.startDate = [NSKeyedUnarchiver unarchiveObjectWithData:data];
// start a timer for the purpose of pulsing only

此时经过的时间是:

NSDate *now = [NSDate date];
NSTimeInterval = [now timeIntervalSinceDate:self.startDate];

上述所有操作都可以在不后台运行的情况下完成。如果您确实需要一个计时器在后台触发,请参阅此苹果参考 https://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html。在“后台执行”下。简而言之,你可以做到,但苹果会让你在批准该应用程序之前满足几个标准——比如它必须是有限的并为用户提供实用性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当应用程序进入后台时如何继续运行 NSTimer 的相关文章

随机推荐

  • Sklearn - 绘制分类报告给出的输出与基本平均值不同?

    我想利用这个答案如何绘制 scikit learn 分类报告 https stackoverflow com questions 28200786 how to plot scikit learn classification report
  • 是否可以将参数从模型中传递到 before_create ?

    我有一个模型 例如 class Account lt ActiveRecord Base before create build dependencies def build dependencies use nifty params to
  • 类模板中的静态成员变量

    当您有一个包含静态成员的 非模板化 类时 例如 class Foo public static int x Then Foo x必须在一个且仅一个翻译单元中定义 否则编译器会抱怨多个定义 所以在somefile cpp你必须定义它 int
  • JSF/Hibernate NotBlank 验证

    我有一个简单的 JSF RichFaces 表单 其中包含一些字段 显然还有一个用于存储它们的支持 bean 在该 bean 中 所有必要的属性都有验证注释 jsr303 hibernate 但我似乎找不到可以检查属性 字符串 是否为空的注
  • 当readyState = 4时,HTML5视频持续时间无穷大

    我正在创建一个自定义 html5 视频播放器 可以播放直播流 录制直播流和播放常规视频文件 为了录制 我使用 RecordRTC 一切运行良好 但我需要创建一个自定义搜索栏 为此 我只需使用 var seekerPosition video
  • 使用 Maven/JUnit/Spring 在第一次失败时停止测试

    我希望 Maven 在遇到第一个错误时停止尝试运行我的 JUnit Spring 测试 这可能吗 我的测试类如下所示 我将它们作为标准 Maven 目标运行 ContextConfiguration locations classpath
  • Jaybird CallableStatement 在获取输出参数之前不会执行

    我有这个Java code Connection conn connectionProvider getConnection statement conn prepareCall execute procedure rm set coord
  • 使用 IMvxMessenger 获取消息两次

    我正在开发 Xamrin Android 应用程序 并且正在使用 MvvmCross 在我的应用程序中 我使用了 IMvxMessenger 但是当我更改视图并返回到同一视图时 我收到两次消息 然后它就崩溃了 解决办法是什么 这是我的代码
  • Java 强制转换异常(不是类强制转换异常)

    当 java 中捕获异常时 是否有将异常转换为新类型的用例 或者是标准 throw new DiffException e 唯一的办法就是做到这一点 如果我忽略了某些内容 我深表歉意 但我得到的唯一搜索结果是 ClassCastExcept
  • UINavigationBar右键不显示

    我通过通知使用以下函数在 UINavigationBar 上加载右键 即使我可以追踪该按钮并验证它是否已分配 它也不会显示 有什么想法吗 编辑 2011 年 4 月 6 日下午 2 42 所以 一些有趣的事情 宽度总是报告为 0 0 voi
  • JMeter JSON Extractor 按条件获取值

    I get a JSON像这样的字符串 id 123 name XX default false type other id 789 name ZZ default false type first 我想得到id 其中名称是ZZ 所以提取的
  • 将 svelte 应用程序构建为一组静态文件

    我想在我的下一个项目中使用 Svelte 因为它的语法简洁并且使用起来非常愉快 不幸的是 要在我的公司部署该应用程序 我无法使用node或服务器上类似的东西 我只能从以下位置提供应用程序nginx作为静态文件 苗条有可能吗 我找不到任何可以
  • 即使套接字是非阻塞的,Perl 上的 recv 也会阻塞

    我在守护进程中用 perl 创建了一个像这样的套接字 IO Socket INET gt new LocalPort gt port Proto gt udp Blocking gt 0 or die socket 在 Linux 机器上
  • 如何在启动时检查麦克风访问情况?

    在我的应用程序中 我将使用麦克风进行一些录音 从iOS7 0开始 用户在开始音频之前会被要求检查访问麦克风的权限 我的应用程序中有一个 开始录制 按钮 这里它首先检查用户的录音权限 这是执行此操作的代码 if AVAudioSession
  • 获取文档后从 Firestore 获取文档 ID

    成功获取文档后如何获取 firestore 文档的文档 id 我正在从这样的 firestore 集合中获取用户数据 const ref await db collection users where phone phone where p
  • 从 Android 模拟器中删除密码?

    如何摆脱 摆脱Android模拟器中的 输入密码解锁 提示 希望我能解释一下这是如何打开的 但这可能是我的错 我一直在尝试使用 android maven 插件为自定义内核构建应用程序 以构建自定义设备管理应用程序 我记得在模拟器中找到了一
  • 解压文件跳过文件夹

    我正在创建一个 php 文件 该文件将从 BitBucket Git 存储库 中拉出后更新我的网站 它下载整个主文件或提交的 zip 文件 然后将其解压缩到网站的文件夹中 我遇到的问题是有一个随机命名的文件夹 其中包含 zip 文件中的所有
  • 解决方案的 NuGet 包还原失败(仅在命令行上)

    我最近切换到 NuGet 最新推荐的方法 该方法为项目使用 packages json 文件 dependencies Newtonsoft Json 9 0 1 RestSharpSigned 105 2 3 frameworks net
  • IE 中的 SVG 动画笔划-dashoffset - 笔划宽度为 0

    我正在尝试使用 SVG 制作圆形填充动画 它在 Chrome FF Safari 中工作得很好 但在 IE 中动画不会发生 我正在使用 jQuery animate 不是 css 动画 IE 11 及以下版本不支持 SVG 简化的动画代码
  • 当应用程序进入后台时如何继续运行 NSTimer

    我正在创建益智游戏应用程序 并使用 NSTimer 显示时间 即 01 20 当应用程序进入后台时 NSTimer 会暂停 但即使应用程序处于后台状态 我也想继续它 例如当应用程序进入后台时 计时器计数为 15 秒 and I 放置5秒现在