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]