我的应用正在运行NSURLSession
,用于下载文件。但是,当用户锁定手机时,我无法更新屏幕上的子视图。他们被冻结了。当手机通过app delegate锁定时,我有一个方法被调用;但是,它不会更新任何子视图。
我尝试将更新放在主线程或背景上,但没有任何效果。我只是想调整某些对象的可见性,但在屏幕锁定后不能再这样做。我希望这是足够的信息。任何帮助都是极好的。谢谢你们!
这是手机锁定时通过应用代表调用的内容
-(void)pauseDownload{
// I want to update the UI!!!!
[session invalidateAndCancel];
bytesSum = 0;
percent = 0;
[HUD hide:YES];
self.downloadButton.hidden = NO;
HUD.progress = percent;
[HUD setLabelText:[NSString stringWithFormat:@"Loading %.0f%%",(percent*100)]];
}
所有可见性权限都不起作用且对象无响应。我的猜测是,当手机被锁定时,我正在丢失指向对象的指针。我可以重新获得它们吗?我离开了吗?!
答案 0 :(得分:4)
在loadView或viewDidLoad中使用:
[[NSNotificationCenter defaultCenter]addObserver:self
selector:@selector(becomeActive)
name:UIApplicationDidBecomeActiveNotification
object:nil];
-(void) becomeActive
{
NSLog(@"ACTIVE");
//
}
答案 1 :(得分:2)
您可以在viewWillAppear:
生命周期视图控制器方法中更新UI:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
// update UI
}
答案 2 :(得分:0)
设备锁定后,没有任何方法或无法创建后台进程或继续下载过程。
唯一可行的方法是我们在下载过程中如果用户锁定设备&应用程序进入后台下载的内容应该保存。因此,一旦应用程序再次处于活动状态,下载过程应从停止的位置开始。