bug描述
在App正常使用中,未发现相关异常。在App开启热点或使用微信等聊天软件进行语音通话时,双击Home键进入任务管理时,会发现如下的现象:
IMG_1595.PNG
导致该问题的原因是,在App进入任务管理时,系统截取了当前活跃App的UI并展示出来,此时所有的App的顶部状态栏是隐藏状态,所呈现出来的管理界面只是截取的结果。
扩展
iOS的任务管理应该是线性表中的单链表结构,因为用户最常用的是随机删除操作,如果使用顺序表,每删除一个元素,会造成至少一半的元素移动,这也正式是顺序表的缺点。所以设计成单链表结构便于插入和删除,在新开启一个App时,该元素会在链表的尾部插入。
上述现象的解决方法
既然问题是由于进入任务管理时,顶部状态栏会被隐藏并截取了AppUI,那不妨在App进入挂起截屏之前,就手动将状态栏隐藏。具体做法如下:
// 监听App挂起的状态 如果即将被挂起 执行状态栏的隐藏操作
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(setNeedsStatusBarAppearanceUpdate) name:UIApplicationWillResignActiveNotification object:nil];
// 调用setNeedsStatusBarAppearanceUpdate会自动再调用 prefersStatusBarHidden方法
// setNeedsStatusBarAppearanceUpdate是iOS7之后的API
- (BOOL)prefersStatusBarHidden {
CGFloat statuBarHeight = [UIApplication sharedApplication].statusBarFrame.size.height;
return statuBarHeight != 20;
}
IMG_1596.PNG结果如下
网友评论