Я также размещение notification
от applicationDidEnterBackground
назвать save method
так, когда, если пользователь не нажать на кнопку Сохранить и попал в Гат данных iPhone home button
пользователя сохраняется.Нужна помощь в отношении исполнения фона iOS
Точно так же как Apple, Doc предлагает
- (void)applicationDidEnterBackground:(UIApplication *)application
{
bgTask = [application beginBackgroundTaskWithName:@"MyTask" expirationHandler:^{
// Clean up any unfinished task business by marking where you
// stopped or ending the task outright.
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
// Start the long-running task and return immediately.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Do the work associated with the task, preferably in chunks.
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
});
}
Вопрос 1: Моя задача не так долго это займет несколько секунд, чтобы сэкономить несколько сотен строк в DB
, это еще нужно положить внутрь dispatch_async
?
Вопрос 2: Пользователь может нажать кнопку Сохранить и сразу же нажать кнопку домой iPhone в этом случае моей экономии метод будет вызываться дважды, и это будет плохо для моего приложения, я должен использовать dispatch_once
или есть другие путь?
Вопрос 3 Apple, Док говорит:
Отказ назвать endBackgroundTask: метод для фоновой задачи приведет к прекращению вашего приложения. Если при запуске задачи вы предоставили обработчик вылета , система вызывает этот обработчик и дает вам последний шанс завершить задачу и избежать завершения .
- Если мое приложение работает и
endBackgroundTask:
не называются разобьет IOS приложения? - Что означает
avoid termination
, если мое приложение находится в фоновом режиме, и моя задача также закончена, все же iOS сохранит мое приложение в живых и предотвратит его завершение?
Вопрос 4 Как долго мое приложение будет оставаться функциональным после перехода в фоновом режиме во время использования этого backgroudtask
? потому что компания Apple уже в комментариях // Start the long-running task and return immediately.
На вопрос 4 есть ответ о том, как долго может выполняться задача; в настоящее время 3 минуты, и вы можете проверить свойство UIApplication 'backgroundTimeRemaining', чтобы определить, сколько осталось времени. Правда, однако, как долго ваше приложение будет оставаться без дела в фоновом режиме (так, что нажатие на иконку восстанавливает его, а не запускает новую копию) неизвестно, потому что это зависит от того, что еще делает пользователь на устройстве, доступной памяти и так далее – Paulw11
Спасибо Paulw11, я отредактирую ответ –
@GianniCarlo Большое вам спасибо за подробный ответ. Пожалуйста, скажите мне еще одну вещь, если пользователь дважды коснется кнопки дома и прекратит приложение, будет baskgroundtask все еще работать одинаково , –