diff --git a/node_modules/react-native/React/CoreModules/RCTTiming.mm b/node_modules/react-native/React/CoreModules/RCTTiming.mm index 70f0543..d003662 100644 --- a/node_modules/react-native/React/CoreModules/RCTTiming.mm +++ b/node_modules/react-native/React/CoreModules/RCTTiming.mm @@ -127,7 +127,15 @@ - (void)setup { _paused = YES; _timers = [NSMutableDictionary new]; - _inBackground = NO; + + __block BOOL initialInBackground; + dispatch_sync(dispatch_get_main_queue(), ^{ + initialInBackground + = [UIApplication sharedApplication].applicationState == UIApplicationStateBackground + || [UIDevice currentDevice].proximityState; + }); + + _inBackground = initialInBackground; for (NSString *name in @[ UIApplicationWillResignActiveNotification, @@ -146,6 +154,11 @@ - (void)setup name:name object:nil]; } + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(proximityChanged) + name:UIDeviceProximityStateDidChangeNotification + object:nil]; } - (void)dealloc @@ -182,6 +195,16 @@ - (void)appDidMoveToForeground [self startTimers]; } +- (void)proximityChanged +{ + BOOL isClose = [UIDevice currentDevice].proximityState; + if (isClose) { + [self appDidMoveToBackground]; + } else { + [self appDidMoveToForeground]; + } +} + - (void)stopTimers { if (_inBackground) {