मेरे पास एक टाइमर चल रहा है जब डिवाइस पृष्ठभूमि में प्रवेश करता है क्योंकि मैं अपनी सेवा में थोड़ी सी मात्रा में चेक रखना चाहता हूं। मैं अनुप्रयोग प्रतिनिधिडिवाइस लॉक होने पर पृष्ठभूमि कार्य रोक रहा है?
UIApplication *app = [UIApplication sharedApplication];
//create new uiBackgroundTask
__block UIBackgroundTaskIdentifier bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
//and create new timer with async call:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//run function methodRunAfterBackground
NSString *server = [variableStore sharedGlobalData].server;
NSLog(@"%@",server);
if([server isEqual:@"_DEV"]){
arrivalsTimer = [NSTimer scheduledTimerWithTimeInterval:30 target:self selector:@selector(getArrivals) userInfo:nil repeats:YES];
}
else {
arrivalsTimer = [NSTimer scheduledTimerWithTimeInterval:300 target:self selector:@selector(getArrivals) userInfo:nil repeats:YES];
}
[[NSRunLoop currentRunLoop] addTimer:arrivalsTimer forMode:NSDefaultRunLoopMode];
[[NSRunLoop currentRunLoop] run];
});
यह बिल्कुल ठीक काम करता है में applicationDidEnterBackground विधि में निम्नलिखित कोड का उपयोग कर रहा है, जब तक उपकरण को स्वत: ताले और फिर घड़ी की टिक टिक बंद हो जाता है। ऐसा होने से रोकने के बारे में कोई सुझाव? डिफ़ॉल्ट लाइव टाइम 5 मिनट है, इसलिए अधिकांश डिवाइसों को एक बार भी टिकने से पहले लॉक कर दिया जाएगा।
धन्यवाद
शायद तुम अगर आप समय से बाहर करें या समस्या कहीं और है चला रहे हैं देखने के लिए हैंडलर में कुछ मुद्रित कर सकते हैं। – Andreas
हाँ, जब मैं फ़ंक्शन कहलाता हूं तो मैं एक NSLog चला रहा हूं और डिवाइस ऑटो-लॉक होने पर यह प्रिंटिंग बंद कर देता है। अगर मैं डिवाइस को मैन्युअल रूप से लॉक करता हूं, तो यह थोड़ी देर के लिए चल रहा है लेकिन अंततः बंद हो जाता है। मुझे लगता है कि मुझे पृष्ठभूमि से सेवा कॉल करने के बजाय पुश अधिसूचना देखना पड़ सकता है। –
मेरा मतलब है कि समाप्ति हैंडलर में कुछ प्रिंट करें। यदि यह आपको केवल अतिरिक्त निष्पादन समय देता है, जब स्क्रीन सामान्य रूप से ऑटो-लॉक हो जाती है तो आपको एनएसएलओजी के साथ मिल जाएगा। – Andreas