Я создаю приложение для просмотра списка фильмов, в котором пользователь может просмотреть детали набора данных, чтобы в итоге получить список для определенного фильма / театра / и т. Д.
Теперь предположим, что пользователь делает паузу с помощью приложенияна 7 дней.При повторном открытии приложения он не должен видеть списки от 7 дней назад.Но если пользователь просто помещает приложение в фоновом режиме на несколько минут, он должен продолжить работу именно там, где он ушел.Я думал, что смогу решить эту проблему, убив приложение после определенного количества времени в фоновом режиме.Это код:
static BOOL goingToQuit = NO;
#define KILL_IN_BACKGROUND_AFTER_SECS 300
- (void)applicationDidEnterBackground:(UIApplication *)application
{
goingToQuit = YES;
UIApplication* app = [UIApplication sharedApplication];
UIBackgroundTaskIdentifier __block bgTask;
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
if(UIBackgroundTaskInvalid != bgTask) {
// Start the long-running task to kill app after some secs and return immediately.
dispatch_after( dispatch_time(DISPATCH_TIME_NOW, KILL_IN_BACKGROUND_AFTER_SECS * 1e09),
dispatch_get_main_queue(), ^{
if(goingToQuit) exit(0);
[app endBackgroundTask: bgTask];
});
}
}
- (void)applicationWillEnterForeground:(UIApplication *)application
{
// cancel ongoing background suicide.
goingToQuit = NO;
}
На моем устройстве я вижу следующее: после KILL_IN_BACKGROUND_AFTER_SECS приложение убивается.После перезапуска журналы устройства показывают, что приложение получило новый PID, записи, показывающие перезапуск и т. Д. Однако устройство не показывает образ запуска default.png, а показывает снимок экрана с тем, где пользователь был раньше.
С другой стороны, если пользователь явно убивает приложение (дважды щелкнув по кнопке «Домой», коснитесь и удерживайте, щелкните по приложению), прежде чем он перезапустит его, приложение запустится со стартовым экраном default.png.Это поведение, которое я хочу при программном уничтожении приложения.
У кого-нибудь есть идеи, как этого добиться?Любая идея высоко ценится.
Кстати: в качестве обходного пути я попытался скрыть главное окно во время applicationDidEnterBackground и показать его снова в applicationWillEnterForeground.Это, однако, очень смущает пользователя, когда он переключается между приложениями.