52ky 发表于 2022-5-3 09:42:10

beginBackgroundTaskWithExpirationHandler 永远不会被调用

问题
我有一个在后台播放音频的应用程序。 当当前曲目完成时,我正在尝试使用 beginBackgroundTaskWithExpirationHandler 跳到下一个曲目。

下面是播放状态改变时调用的代码。 即使同一方法中的其他代码在后台成功,它也不会记录“beginBG called”。
UIApplication *app = ;
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
    ;
    NSLog(@"beginBG called");
    ;
    bgTask = UIBackgroundTaskInvalid;
}];
ffwButtonPressed 调用几个不同的方法来改变轨道。 完成后。 . .
UIApplication *app = ;
    if (bgTask != UIBackgroundTaskInvalid) {
      ;
      bgTask = UIBackgroundTaskInvalid;
      NSLog(@"end bgTask");
编辑:声明

UIBackgroundTaskIdentifier bgTask;

编辑:在 ViewDidLoad

bgTask = 0;

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


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

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

;
NSLog(@"beginBG called");
;



页: [1]
查看完整版本: beginBackgroundTaskWithExpirationHandler 永远不会被调用