首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS MultiTasking不工作

iOS MultiTasking不工作
EN

Stack Overflow用户
提问于 2012-07-08 01:29:47
回答 2查看 339关注 0票数 1
代码语言:javascript
复制
- (IBAction)buttonPressed:(id)sender
{
UIDevice *device = [UIDevice currentDevice];
device.batteryMonitoringEnabled = YES;
if ([[UIDevice currentDevice] isMultitaskingSupported]) {
    [self beingBackgroundUpdateTask];
}
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryChanged:) name:@"UIDeviceBatteryLevelDidChangeNotification" object:device];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryChanged:) name:@"UIDeviceBatteryStateDidChangeNotification" object:device];
[self currentBatteryState];


}


- (void) beingBackgroundUpdateTask
{
    self->backgroundUpdateTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
        [self endBackgroundUpdateTask];
    }];
}


- (void) endBackgroundUpdateTask
{
    [[UIApplication sharedApplication] endBackgroundTask: self->backgroundUpdateTask];
    self->backgroundUpdateTask = UIBackgroundTaskInvalid;
}

由于某些原因,通知没有被遵守。我做错了什么吗?我想在拔下电源后观察10分钟

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-08 01:45:36

您不应该在buttonPressed:方法中调用endBackgroundUpdateTask,因为这会取消您的后台任务。尝试删除此代码:

代码语言:javascript
复制
if ([[UIDevice currentDevice] isMultitaskingSupported]) {
    [self endBackgroundUpdateTask];
}

此外,您应该将UIDeviceBatteryLevelDidChangeNotification常量传递给"name“参数,而不是字符串。它应该看起来像这样(注意没有双引号):

代码语言:javascript
复制
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryChanged:) name:UIDeviceBatteryLevelDidChangeNotification object:device];

(也有可能UIDevice根本不会在后台发送这些通知。)

票数 1
EN

Stack Overflow用户

发布于 2012-07-08 01:35:28

您是否已将适用的背景代码添加到您的AppDelegate?下面是《iOS编程指南》中的背景instructions

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11377186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档