来自后台时iOS App UI冻结
Posted
技术标签:
【中文标题】来自后台时iOS App UI冻结【英文标题】:iOS App UI freeze when coming from background 【发布时间】:2016-07-05 17:49:03 【问题描述】:我遇到了一个奇怪的问题,我不知道为什么会发生这种情况。我的应用在处于活动状态时运行良好,但是当它来自后台时(通过按下主页按钮并锁定设备)。
注意:此行为仅在设备上观察到,而在模拟器中观察不到。
控制台正在抛出消息:
Jul 5 13:28:55 Tejas-iPhone backboardd[7234] <Warning>: BKSendHIDEvent: IOHIDEventSystemConnectionDispatchEvent error:0xE00002E8 -- Unknown event dropped
还有太多的日志:
Jul 5 14:41:40 Tejas-iPhone boostApp[7913] <Error>: CoreLocation: Discarding message for event 0 because of too many unprocessed messages
Jul 5 14:41:42 Tejas-iPhone boostApp[7913] <Error>: CoreLocation: Discarding message for event 12 because of too many unprocessed messages
Jul 5 14:44:56 Tejas-iPhone boostApp[7913] <Error>: CoreLocation: Discarding message for event 1 because of too many unprocessed messages
Jul 5 14:44:56 Tejas-iPhone boostApp[7913] <Error>: CoreLocation: Discarding message for event 27 because of too many unprocessed messages
我发现如果 locationManager 不在主线程上运行,CoreLocation 会记录上述消息。
这是我初始化CLLocationManager
的方法:
-(id)init
if ( self = [super init] )
[self runLocationManagerOnMainThread];
return self;
-(void)runLocationManagerOnMainThread
if (![NSThread mainThread])
[self performSelectorOnMainThread:@selector(runLocationManagerOnMainThread) withObject:nil waitUntilDone:NO];
self.locationManager = [[LocationManager alloc] init];
self.locationManager.delegate = self;
self.locationManager.distanceFilter = 1;
self.locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
self.buildings = [[NSMutableArray alloc] init];
+ (id)sharedInstance
static LocationMonitor *sharedMyManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^
sharedMyManager = [[self alloc] init];
);
return sharedMyManager;
如果我需要提及任何具体细节,请告诉我。我试过this,但没有任何有效答案。
【问题讨论】:
这个问题是否总是在设备中重复? 是的。每次您让应用程序进入后台并再次打开它时,应用程序都会冻结。 在这里查看答案***.com/questions/7857323/… 【参考方案1】:这很奇怪。不久前,我将NSLogger 集成到我的项目中,我开始看到 xcode 终端停止记录日志,我必须始终依靠苹果配置器和 NSLogger 来查看我的日志。
在我从 pod 和我的项目中删除 NSLogger 后,我的应用开始运行得更快,并且无论应用从后台打开多少次,UI 都不再冻结。
【讨论】:
以上是关于来自后台时iOS App UI冻结的主要内容,如果未能解决你的问题,请参考以下文章
在 SceneKit 中使用 GIFU 库播放 GIF 会导致应用程序 UI 冻结任何解决方案? UIView Animated 从后台线程调用