2011-07-28 15 views
2

満了ハンドラが呼び出されると、私たちのアプリケーションをログアウトします。これはいくつかの時間で動作しますが、endBackgroundTaskを呼び出してバックグラウンドタスクを終了しても、プロセスを強制終了させることがあるようです。私たちのログアウトプロセスは、このケースでは時間がかかり過ぎて、iOSだけがそれを殺すように思えるようです。これは長い作業ではありませんが、余分な時間を要求する方法はありますか?iOSがアプリを終了する前に、有効期限ハンドラでタスクを正常に終了するにはどうすればよいですか?

if ([app respondsToSelector:@selector(beginBackgroundTaskWithExpirationHandler:)]) { 
     bgTask = [app beginBackgroundTaskWithExpirationHandler:^{ 
      // Synchronize the cleanup call on the main thread in case 
      // the task actually finishes at around the same time. 
      dispatch_async(dispatch_get_main_queue(), ^{ 
       if (bgTask != UIBackgroundTaskInvalid) { 

        backgroundKilled = true; 

        [self logoutAll]; 

        [app endBackgroundTask:bgTask]; 
             bgTask = UIBackgroundTaskInvalid; 
       } 
      }); 
     }]; 
    } 

答えて

2

ここではいいですUIApplication delegate overviewは、終了時にアプリが通過する内容をカバーしています。

+0

これは本当に素晴らしい図です。 – tjg184

-1

iOSはあなたのバックグラウンドタスクに10分を与えます。あなたのログアウトプロセスはそれほど長くかかりますか?

+0

実際には、最大限の時間サーバーにデータを送信し続けたいと考えています。その10分後にログアウトします。私はこれをもう一度テストして確認していますが、アプリがクラッシュしているという報告があります。私はバックグラウンドタスクに絞り込んだ。 – tjg184

関連する問題