0

我有一个非常复杂的应用程序,其中包含几乎所有 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];
            }
        }
    }
4

1 回答 1

0

我不确定,但从您的代码中,我只能认为

[self performSelector:@selector(handleNotification:) withObject:nil afterDelay:1.0];

可能会阻止您的用户界面。我认为它会执行您的DidBecomeActive方法,然后在延迟几秒钟后开始执行handleNotification. 因此performSelectorInBackground,如果可能,请使用,即如果您不做任何与用户界面相关的更改handleNotification:

[self performSelectorInBackground:@selector(handleNotification:) withObject:nil];

希望这可以帮助。

如果您需要更多帮助,请告诉我。

于 2012-04-10T10:26:04.043 回答