通常使用任何应用程序,如果我打开应用程序并锁定屏幕,一小时左右如果我解锁屏幕,应用程序将重新启动。但我的应用程序无法重新启动或恢复。是否有任何设置可以恢复我的应用程序或我错过了什么?
if (!oprationQueue) {// Application did enter in background method
oprationQueue = [[NSOperationQueue alloc] init];
}
NSInteger updateSec = [[NH_Fetch_settings alloc] getUpdateTimeInterva];
bgdataUpdateTimer = [NSTimer scheduledTimerWithTimeInterval:updateSec target:self selector:@selector(updateData:) userInfo:nil repeats:YES];
NSInteger cleanSec = [[NH_Fetch_settings alloc] cleanupFrequency];
bgCleanupTimer = [NSTimer scheduledTimerWithTimeInterval:cleanSec target:self selector:@selector(cleapAllData:) userInfo:nil repeats:YES];
[NH_advertisement sharedInstance].isFirstTime = NO;
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"advFirst"];
backgroundTask_dataUpdate =[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
NSLog(@"%f",[UIApplication sharedApplication].backgroundTimeRemaining);
}];
backgroundTask_cleanUp =[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
NSLog(@"%f",[UIApplication sharedApplication].backgroundTimeRemaining);
}];
}
- (void)applicationWillEnterForeground:(UIApplication *)application{
[application endBackgroundTask:backgroundTask_dataUpdate];
backgroundTask_dataUpdate = UIBackgroundTaskInvalid;
[application endBackgroundTask:backgroundTask_cleanUp];
backgroundTask_cleanUp = UIBackgroundTaskInvalid;
}
解锁屏幕后,应用程序不会抛出简历事件。 这个来吧日志屏幕
UIApplication _handleNonLaunchSpecificActions:forScene:withTransitionContext:completion:] ** unhandled action - > { handler = remote; info = { (1)= 5; }; }
答案 0 :(得分:0)
您可以按照AppDelgate
- (void)applicationWillResignActive:(UIApplication *)application;
- (void)applicationDidEnterBackground:(UIApplication *)application;
- (void)applicationWillEnterForeground:(UIApplication *)application;
- (void)applicationDidBecomeActive:(UIApplication *)application;
以所需方法执行代码。
编辑:
正如您所说,解锁iphone后您的应用未恢复或重新启动。
重新启动的第一件事意味着AppDelegate
application:didFinishLaunchingWithOptions
被调用,但在您的情况下(解锁设备后,此方法不会被调用,即应用程序不会重新启动这种情况)。
要恢复应用的任务,您可以在applicationWillEnterForeground:
或applicationDidBecomeActive:
中进行编码,并且您已正确撰写。
答案 1 :(得分:0)
当您拥有锁定设备时,可能会执行一些可能导致应用程序崩溃的代码。请按照用于识别在锁定屏幕期间发生崩溃的简单步骤。尝试查看应用程序在设备上留下的任何崩溃日志。
Connect your device
Open XCode
Go to the Organizer (Window > Organizer)
Expand your device listing in the sidebar and select Device Logs
Look for any crash logs left behind by your app
并告诉我你有以下方法的代码。
- (void)applicationWillResignActive:(UIApplication *)application;
- (void)applicationDidEnterBackground:(UIApplication *)application;
- (void)applicationWillEnterForeground:(UIApplication *)application;
- (void)applicationDidBecomeActive:(UIApplication *)application;
答案 2 :(得分:0)
我认为你应该在beginBackgroundTaskWithExpirationHandler:^ {}方法中添加下面提到的代码。
[application endBackgroundTask:backgroundTask_dataUpdate];
backgroundTask_dataUpdate = UIBackgroundTaskInvalid;
所以代码看起来应该是这样的。
backgroundTask_dataUpdate =[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[application endBackgroundTask:backgroundTask_dataUpdate];
backgroundTask_dataUpdate = UIBackgroundTaskInvalid;
NSLog(@"%f",[UIApplication sharedApplication].backgroundTimeRemaining);
}];
注意:对beginBackgroundTaskWithExpirationHandler的每次调用都必须调用endBackgroundTask,否则操作系统可能会终止你的app。