0

ほとんどすべての UI パーツを含む非常に複雑なアプリケーションがあります。問題は、アプリケーションをバックグラウンドで作成し、再びフォアグラウンドにすると、UIブロックされたり、数秒間ハングしたりすることです。

参考までに。この問題は、シミュレーターとデバイスの両方にあります。

誰でもこの問題を案内できますか?? フォアグラウンドになったときのアプリの処理方法は??

私のアプリには非常に多くの 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

I am not sure but from your code, I can only think

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

may be blocking your UI. I think that it executes your DidBecomeActive method and then after a seconds delay it starts execution of handleNotification. So use performSelectorInBackground if possible i.e. if you don't do any user interface related changes in handleNotification:.

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

Hope this helps.

Let me know if you need more help.

于 2012-04-10T10:26:04.043 に答える