私のアプリケーションでは、バック グラウンド スレッドを使用して複数のサービスをヒットし、コア データで操作を実行しています。バックグラウンドプロセスにメインスレッドを使用しましたが、正常に動作しています。これが私のコードです
dispatch_queue_t main = dispatch_get_main_queue();
dispatch_async(main,
^{
[self backGroundCall];
});
-(void)backGroundCall
{
NSLog(@"Done");
if([CacheManager refreshDBforFirstTimeUseWithDelegate:self])
{
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"IsDBInitialized"];
ContainerViewController *containerViewControllerInstance = [ContainerViewController getContainerInstance];
[containerViewControllerInstance setUserId:_userID];
[progressView setHidden:YES];
[self.view setUserInteractionEnabled:YES];
[self.navigationController setDelegate:containerViewControllerInstance];
[self.navigationController pushViewController:containerViewControllerInstance animated:YES];
}
}
データベースを初期化したら、コンテナー ビューに移動する必要があります。初期化中は進行状況バーが 1 つ表示されます。バックグラウンドプロセス全体が完了すると(アプリは最小化された状態になります)、それは正常に機能しています。バックグラウンドプロセス中にフォアグラウンドに来るとプログレスバーが表示されず、プログレスビューの代わりに黒い画面が表示されます。メインの脅威コンテナ ビューの完了後、[メイン スレッド プロセスのフォアグラウンドになった場合] はすべて表示されません。
メイン スレッド プロセスの途中でアプリに戻った場合は、プログレス バーを表示する必要があります。この問題を解決する方法を教えてください。
ありがとう。