1

7 時間ごとに実行されるバックグラウンド ジョブがあり、API 呼び出しに約 1 ~ 3 秒かかります。設定のバッテリー セクションを見ると、ジョブが過去 20 時間で 40 分間バックグラウンドで実行されていることがわかります。

バックグラウンド フェッチのシミュレートは問題なく機能し、数秒以内に完了を呼び出します。

なぜそれがあまりにも長く実行されているのか分かりますか?

NSTimeInterval backgroundFetchTimeInterval = 7 * 3600;
[[UIApplication sharedApplication] setMinimumBackgroundFetchInterval:backgroundFetchTimeInterval];

- (void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
       [[SyncManager sharedManager] performSyncWithCompletion:^(NSArray *results, NSError *error) {
             if (error) {
                completionHandler(UIBackgroundFetchResultFailed);
            }
            else {
                if (resultCount > 0) {
                    completionHandler(UIBackgroundFetchResultNewData);
                }
                else {
                    completionHandler(UIBackgroundFetchResultNoData);
                }
            }
    }];
}
4

1 に答える 1

1

できることは、どれだけの時間を費やしたかを 1 つのファイルに書き込むことです。

アイデアは、バックグラウンド フェッチを開始した時刻と終了した時刻をファイルに書き込むことです。このようにして、実際に費やした金額を計算できます。これにより、より適切な分析が可能になります。

于 2015-12-06T18:38:26.760 に答える