解锁屏幕

时间:2016-04-22 12:26:58

标签: ios objective-c iphone

通常使用任何应用程序,如果我打开应用程序并锁定屏幕,一小时左右如果我解锁屏幕,应用程序将重新启动。但我的应用程序无法重新启动或恢复。是否有任何设置可以恢复我的应用程序或我错过了什么?

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;     }; }

3 个答案:

答案 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。