[软件设计/软件工程] beginBackgroundTaskWithExpirationHandler 永远不会被调用

[复制链接]
发表于 2022-5-3 09:42:10
问题
我有一个在后台播放音频的应用程序。 当当前曲目完成时,我正在尝试使用 beginBackgroundTaskWithExpirationHandler 跳到下一个曲目。

下面是播放状态改变时调用的代码。 即使同一方法中的其他代码在后台成功,它也不会记录“beginBG called”。
  1. UIApplication *app = [UIApplication sharedApplication];
  2. bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
  3.     [self ffwButtonPressed:ffwButton];
  4.     NSLog(@"beginBG called");
  5.     [app endBackgroundTask:bgTask];
  6.     bgTask = UIBackgroundTaskInvalid;
  7. }];
复制代码

ffwButtonPressed 调用几个不同的方法来改变轨道。 完成后。 . .
  1. UIApplication *app = [UIApplication sharedApplication];
  2.     if (bgTask != UIBackgroundTaskInvalid) {
  3.         [app endBackgroundTask:bgTask];
  4.         bgTask = UIBackgroundTaskInvalid;
  5.         NSLog(@"end bgTask");
复制代码

编辑:声明

UIBackgroundTaskIdentifier bgTask;

编辑:在 ViewDidLoad

bgTask = 0;

回答
您实际上误解了该功能
  1. -(UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler:(void (^)(void))handler

复制代码

名为“handler”的块参数是后台任务到期(10 分钟)时发生的情况。

要运行代码,需要将代码从过期处理程序中取出:
  1. UIApplication *app = [UIApplication sharedApplication];
  2. bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
  3.     bgTask = UIBackgroundTaskInvalid;
  4. };

  5. [self ffwButtonPressed:ffwButton];
  6. NSLog(@"beginBG called");
  7. [app endBackgroundTask:bgTask];
复制代码






上一篇:在 Python 中出现错误“SyntaxWarning: 'str' object is not callable”
下一篇:无法在 Xcode 中重命名组文件夹

使用道具 举报

Archiver|手机版|小黑屋|吾爱开源 |网站地图

Copyright 2011 - 2012 Lnqq.NET.All Rights Reserved( ICP备案粤ICP备14042591号-1粤ICP14042591号 )

关于本站 - 版权申明 - 侵删联系 - Ln Studio! - 广告联系

本站资源来自互联网,仅供用户测试使用,相关版权归原作者所有

快速回复 返回顶部 返回列表