- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个在后台播放音频的应用程序。我正在尝试使用 beginBackgroundTaskWithExpirationHandler
在当前轨道结束时跳到下一首轨道。
下面是播放状态改变时调用的代码。它从不记录“beginBG called”,即使同一方法中的其他代码在后台成功实现。
UIApplication *app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[self ffwButtonPressed:ffwButton];
NSLog(@"beginBG called");
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
ffwButtonPressed
调用几个不同的方法来改变轨道。完成后...
UIApplication *app = [UIApplication sharedApplication];
if (bgTask != UIBackgroundTaskInvalid) {
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
NSLog(@"end bgTask");
编辑:声明
UIBackgroundTaskIdentifier bgTask;
编辑:在ViewDidLoad
bgTask = 0;
最佳答案
你其实误解了函数-(UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler:(void (^)(void))handler
称为“处理程序”的 block 参数是后台任务到期(10 分钟)时将发生的事情。
要让您的代码运行,您需要将您的代码从过期处理程序中取出:
UIApplication *app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
bgTask = UIBackgroundTaskInvalid;
};
[self ffwButtonPressed:ffwButton];
NSLog(@"beginBG called");
[app endBackgroundTask:bgTask];
这是 documentation 的链接
关于iphone - beginBackgroundTaskWithExpirationHandler 永远不会被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11617786/
我正在制作一个应用程序,音频将在后台播放。在以下代码中,bgTask 未声明。 bgTask 应该是一个什么样的对象? - (void)applicationDidEnterBackground:(U
在连接时,我在连接用户的最后添加了这段代码: UIBackgroundTaskIdentifier myLongTask; myLongTask = [[UIApplication s
我正在从服务器下载内容,如果用户将我的应用切换到后台,我会使用 beginBackgroundTaskWithExpirationHandler 继续下载。 我注意到,当我的应用程序转到后台时,状态栏
我有一个在后台播放音频的应用程序。我正在尝试使用 beginBackgroundTaskWithExpirationHandler 在当前轨道结束时跳到下一首轨道。 下面是播放状态改变时调用的代码。它
我对如何以及何时使用 beginBackgroundTaskWithExpirationHandler 感到有些困惑。 Apple 在他们的示例中展示了在 applicationDidEnterBac
我试图在这里关注之前的帖子:Best practice to send a lot of data in background on iOS4 device? 基本上,我有一个名为 getReques
伙计们:)我有一个 iOS 警报应用程序,它使用 UILocalNotification-s 在应用程序进入后台时安排用户定义的警报。由于这(在我的实现中)可能是一个相对较长的过程,因此我需要确保在应
我正在使用 NSURLConnection 下载 500mb 的存档。我想在后台线程上下载它,所以我写道: NSURLRequest *theRequest = [NSURLRequest reque
我的同事对使用后台任务来处理机载数据库中陈旧数据的批量清理持谨慎态度。在我看来,这是进行清理的理想场所,因为它不会影响用户体验。 批量清理核心数据的最佳实践是什么?使用 BG 任务安全吗?即使用 be
我需要在 iOS 应用程序中实现一个后台进程,它每 60 秒执行一次作业。我知道这只能在应用程序处于焦点状态时完成,但我确实希望这项工作在应用程序关闭后在后台完成运行。我将使用 GCD 调度一个计时器
我在 applicationDidEnterBackground 委托(delegate)方法中使用 beginBackgroundTaskWithExpirationHandler 方法来保持 NS
我正在开发一个能够将数据上传到远程端点的 iOS 应用程序。因为良好的用户体验需要在上传时离开应用去执行其他任务,我是否应该使用 beginBackgroundTaskWithExpirationHa
我有一些长时间运行的进程,即使应用程序进入后台我也想运行。我正在调用应用程序的 beginBackgroundTaskWithExpirationHandler: 方法,并在 expirationBl
当我的应用程序进入后台时,我的 AppDelegate 中有以下代码: var backgroundUpdateTask: UIBackgroundTaskIdentifier! func begin
您可以从 beginBackgroundTaskWithExpirationHandler 更新 UI 吗?是否可以使用 perofrmSelectorOnMainThread 或 GCD 来做到这一
我知道有很多关于类似主题的问题,但我认为没有任何问题能完全解决这个问题(尽管我很高兴被证明是错误的!)。 首先是一些背景;我开发了一个在后台监控用户位置的应用程序,它工作正常,但电池使用率很高。为了尝
在“-applicationDidEnterBackground”方法中的 beginBackgroundTaskWithExpirationHandler 代码块中,我实现了 nstimer,如下所
Xcode 6.3.1 ARC 启用,适用于 iOS 8.3 我需要帮助理解我在应用程序进入后台后尝试维护单例共享计时器时遇到的奇怪行为。 以前我不关心这个 NSTimer,因为它是使用后台位置服务在
在我的应用程序中,我正在将图像从 iPhone 上传到服务器。如果用户按下主页按钮同步,应用程序将关闭。 我希望应用程序必须在后台运行直到同步完成。 我的问题是:如何使用“beginBackgroun
我正在启动后台任务,如下所示: UIApplication* application = [UIApplication sharedApplication]; _backgroundTask = [[
我是一名优秀的程序员,十分优秀!