Лучшая стратегия для обновления базы данных SQLite в фоновом режиме при использовании базы данных - PullRequest
3 голосов
/ 04 ноября 2010

У меня есть приложение, которое позволяет пользователям запрашивать sqlite DB.Когда приложение запускается, оно загружает URL-адрес, чтобы узнать, есть ли какие-либо обновления базы данных в фоновом потоке.

К сожалению, это вызывает блокировки, если пользователь выбирает функцию, которая пытается запросить базу данных, пока обновлениеБег.

У меня двоякий вопрос.

  1. Какова наилучшая стратегия предотвращения конфликтов в этом сценарии.

    • Скопируйте базу данных в другой файлобновите его и скопируйте обратно
    • Включите одноэтапное управление и используйте его для планирования операций в очереди.
    • цикл и ожидание открытия блокировки (хотя я не хочу удерживатьот пользователя)
  2. Возможно ли приостановить фоновый поток до тех пор, пока приложение не завершится, и не запустите обновления непосредственно перед завершением приложения.

Если у кого-нибудь есть какой-либо совет, я буду признателен за это, поскольку мне необходимо запустить обновление без необходимости прекращать использование приложения пользователем.

Ответы [ 2 ]

0 голосов
/ 04 ноября 2010

Пожалуйста, поясните - это звучит так, как будто запрос к базе данных должен быть очень короткой и быстрой функцией, хотя загрузка URL-адреса может быть гораздо более длительной операцией. Вы держите блокировки базы данных во время всей операции загрузки URL? Если это так, я думаю, что вы хотите выполнить загрузку URL-адреса как одну операцию - и как только все данные будут получены - быстро применить ее к вашей базе данных, таким образом, не удерживая базу данных во время загрузки URL-адреса.

0 голосов
/ 04 ноября 2010

Чтобы ответить на ваш вопрос, я считаю, что пункт 1 № 3 - лучшее решение для вашей конкретной проблемы на Iphone.Поскольку вы не можете запустить другой поток, чтобы выполнить фоновую обработку, небольшое ожидание (которое большинство программ имеют в начале) является стандартным действием.

Я бы НЕ пытался реализовать методгде обновления отправляются, когда приложение завершается.Слишком часто люди перестали (включая меня) запускать приложение, когда они просто хотят перейти к чему-то другому.

ИМО, ожидание при запуске программы (надеюсь, не слишком долго) - лучшее решение этой проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...