1

ユーザーがiOSデバイスで最小化して他の作業を開始した場合でも、アプリをバックグラウンドでタスクで実行し続けようとしていますが、アプリが画面上でアクティブな場合にのみメソッドがヒットします。ここで明らかな何かが欠けていますか?

-(void) viewDidAppear:(BOOL)animated
{
  [self performSelectorInBackground:@selector(RunMethodEvenWhenMinimized) withObject:nil];
}

-(void)RunMethodEvenWhenMinimized
{
    while(YES)
    {
        //My Code
        sleep(10);
    }
}
4

1 に答える 1

3

NSObject問題は、バックグラウンド処理とのバックグラウンド スレッド ヘルパー関数を混乱させているように見えることです。実際には、メソッドをバックグラウンドで実行するように指定しているのではなく、メイン スレッドではないスレッドで実行するように指定しています。-[UIApplication beginBackgroundTaskWithExpirationHandler:];アプリケーションがメソッド実行のためにフォアグラウンドで割り当てられた時間を超える必要があることをシステムに通知するために使用することをお勧めします。すべてが完了したら、コードは次のようになります。

-(void) viewDidAppear:(BOOL)animated
{
    UIApplication *app = [UIApplication sharedApplication];
    bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
    bgTask = UIBackgroundTaskInvalid;
}];
    [self RunMethodEvenWhenMinimized];
    [app endBackgroundTask:bgTask];
}

-(void)RunMethodEvenWhenMinimized
{
    while(YES)
    {
        //My Code
        sleep(10);
    }
}
于 2012-11-04T07:33:12.407 に答える