2011-10-19 15 views
0

iOSアプリケーションがバックグラウンドで実行されません。ホームボタンがヒットすると、アプリは終了します。以下はiOS:アプリケーションがクラッシュして「アプリケーションが適時に起動できませんでした」

私のコードは、アプリケーションが時間がないのリニューアルされている場合は、アプリの新しいインスタンスがエラーで殺されます

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    double sleepTime = [[UIApplication sharedApplication] backgroundTimeRemaining] - 1; 

    [self performTaskforTime:sleepTime]; 
} 

です:

例外タイプ:00000020例外コード:0x8badf00dハイライトされた スレッド:0

アプリケーションの特定情報:My_Appが時間内に起動に失敗しました

私はスリープ時間を短縮できません。これにはどんな解決策がありますか?あなたはそれ以外のUIにサービスを提供することができなくなりますよう、実行時間の長いタスクをメインキューをブロックしたくない

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    UIBackgroundTaskIdentifier btid = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL]; 

    double sleepTime = [[UIApplication sharedApplication] backgroundTimeRemaining] - 1; 

    dispatch_async(/* background queue */, ^{ 
    [self performTaskforTime:sleepTime]; 
    [[UIApplication sharedApplication] endBackgroundTask:btid]; 
    } 
} 

答えて

0

あなたは、- (void)applicationDidEnterBackground:(UIApplication *)applicationから復帰このような何かをする必要があります。あなたのアプリケーションは-performTaskforTime:でビジー状態であるため、時間内に起動することはできません。

+0

バックグラウンドで私のアプリのdoesntの実行が終了しますので、私は、これを試してみましたが、タスクは実行されませんされます。 – nanjunda

+0

私の答えを更新しました。バックグラウンドで実行するには、-beginBackgroundTaskWithExpirationHandler:を呼び出す必要があります。 – hypercrypt

0

メインアプリケーションスレッドを数秒以上ブロックすることはできません。このSOの投稿を参照してください。

Link

+0

私は、アプリケーションが新しいインスタンスとして起動し、新しいインスタンスではスレッドがブロックされていないのを見ます。 – nanjunda

関連する問題