我有一个非常复杂的应用程序,它包含几乎所有的UI部分。现在的问题是,当我在后台制作我的应用程序并再次进入前台时,我的 UI 会阻止/挂起几秒钟。
JFYI。此问题同时出现在模拟器和设备上。
任何人都可以指导这个问题吗?如何在进入前台时处理应用程序?
我的应用程序是否包含如此多的UI部件并需要重新初始化所有内容?或者是否有任何iOS特定处理??
我听说iOS在进行背景和前景时序列化和反序列化对象。请提供一些指导链接等等。谢谢
编辑:
if(isInActive)
{
if([UIApplication sharedApplication].applicationIconBadgeNumber != 0)
{
//User canceled the Notification alert but badge is still there which indicates that
//the push notification had arrived...
[self performSelector:@selector(handleNotification:) withObject:nil afterDelay:1.0]; //change: From 2.0 to 1.0
}
isInActive = NO;
int curTime = (int)ceil([[NSDate date] timeIntervalSince1970]);
int storedTime;
int timeDiff;
storedTime = [[NSUserDefaults standardUserDefaults] integerForKey:@"logOffDuration"];
if(storedTime > 0)
{
timeDiff = curTime - storedTime;
int delay = [[LogOffMgr getInstance].LogOff.delay_ intValue]/1000;
if(timeDiff > delay)
{
[[LogOffMgr getInstance] stop];
[[LogOffMgr getInstance] LogOffTimer_tick];
}
}
}
答案 0 :(得分:0)
我不确定,但是从您的代码中,我只能想到
[self performSelector:@selector(handleNotification:) withObject:nil afterDelay:1.0];
可能会阻止您的用户界面。我认为它执行你的DidBecomeActive
方法,然后在一秒钟后延迟它开始执行handleNotification
。因此,如果可能,请使用performSelectorInBackground
,即如果您未在handleNotification:
中执行任何与用户界面相关的更改。
[self performSelectorInBackground:@selector(handleNotification:) withObject:nil];
希望这有帮助。
如果您需要更多帮助,请与我联系。