Moja aplikacja korzysta z UIBackgroundMode, tj. Jest ponownie uruchamiana przez iOS, gdy zdarzenia Bluetooth występują nawet wtedy, gdy aplikacja nie jest aktywna. Dlatego zdarzenia Bluetooth są wywoływane przez iOS na kolejkę tła (kolejka jest określona przeze mnie).Czy kolejka główna jest wywoływana po ponownym uruchomieniu aplikacji w tle?
mogę jednak kod wysyłka z powrotem do głównego kolejki, czyli
DispatchQueue.main.async { }
(Swift)
dispatch_async(dispatch_get_main_queue(), ^{ })
(Objective-C)
i zakładamy, że jego pętla prowadzony jest uruchomiony, to jest moje bloki zostaną wysłane? Czy też główna kolejka zawieszona jest w tle, a zatem powinienem unikać dodawania do niej bloków dyspozytorskich?
Czy próbowałeś zrobić to samo. –
Przeprowadziłem eksperyment, w którym iOS wydaje się uruchamiać główną pętlę, ponieważ bloki są wykonywane, gdy aplikacja została uruchomiona w tle. Nie mogę jednak zakładać, że iOS zachowuje się w ten sposób. Jeśli nadal będzie działać główna pętla, znacznie ułatwi mi to moją aplikację, ponieważ wtedy nie potrzebuję synchronizacji wątków, ponieważ w razie potrzeby wysyłam ją do głównej kolejki. –