From ceee55e6d9ca164563c79ef797b9b8cb3b65854c Mon Sep 17 00:00:00 2001 From: Krunoslav Zaher Date: Tue, 12 Apr 2016 12:17:10 +0200 Subject: [PATCH] Removes is on WiFi check from main queue. --- .../RxExample/Services/ReachabilityService.swift | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/RxExample/RxExample/Services/ReachabilityService.swift b/RxExample/RxExample/Services/ReachabilityService.swift index 644210ae..c9ce2874 100644 --- a/RxExample/RxExample/Services/ReachabilityService.swift +++ b/RxExample/RxExample/Services/ReachabilityService.swift @@ -9,6 +9,7 @@ #if !RX_NO_MODULE import RxSwift #endif +import Foundation public enum ReachabilityStatus { case Reachable(viaWiFi: Bool) @@ -45,12 +46,19 @@ class DefaultReachabilityService let reachabilityRef = try Reachability.reachabilityForInternetConnection() let reachabilitySubject = BehaviorSubject(value: .Unreachable) + // so main thread isn't blocked when reachability via WiFi is checked + let backgroundQueue = dispatch_queue_create("reachability.wificheck", DISPATCH_QUEUE_SERIAL) + reachabilityRef.whenReachable = { reachability in - reachabilitySubject.on(.Next(.Reachable(viaWiFi: reachabilityRef.isReachableViaWiFi()))) + dispatch_async(backgroundQueue) { + reachabilitySubject.on(.Next(.Reachable(viaWiFi: reachabilityRef.isReachableViaWiFi()))) + } } reachabilityRef.whenUnreachable = { reachability in - reachabilitySubject.on(.Next(.Unreachable)) + dispatch_async(backgroundQueue) { + reachabilitySubject.on(.Next(.Unreachable)) + } } try reachabilityRef.startNotifier()