【问题标题】:App will not update itself when running in the background应用程序在后台运行时不会自行更新
【发布时间】:2014-03-30 21:33:47
【问题描述】:

当应用在后台运行时,我的应用没有更新来自网络服务的信息。

-(void)onTick:(NSTimer *)timer {
    [self parseData];
    [self.tableView reloadData];

}
- (void)viewDidLoad
{
    [super viewDidLoad];
    NSDate *d = [NSDate dateWithTimeIntervalSinceNow: 60.0];
    NSTimer *t = [[NSTimer alloc] initWithFireDate: d
                                          interval: 30.0
                                            target: self
                                          selector:@selector(onTick:)
                                          userInfo:nil repeats:YES];

NSRunLoop *runner = [NSRunLoop currentRunLoop];
[runner addTimer:t forMode: NSDefaultRunLoopMode];

}

如果应用程序是可见的,那么一切都很顺利,一旦它进入后台,它就不会更新数据,直到我再次将应用程序带到前台。

对造成这种情况的原因有什么想法或建议吗?

非常感谢。

【问题讨论】:

标签: ios iphone objective-c cocoa-touch


【解决方案1】:

为了在 iOS 设备上节省资源,操作系统不会更新/绘制不可见的 UIView。

另外,除非您的应用请求权限,否则您的应用将在后台暂停。

来自苹果文档The View Drawing Cycle

视图绘图根据需要进行。当视图首次显示时,或者由于布局更改而使其全部或部分可见时,系统会要求视图绘制其内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 2019-04-18
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多