2014-10-24 6 views
0

Мое приложение для iOS сильно зависит от данных на стороне сервера, и для его запуска мне нужно немного информации из Parse, чтобы выполнить работу над делегатом приложения ... проблема в том, что Я делаю этот запрос в основном потоке, потому что в противном случае я бы использовал блок или очередь, и сразу после запуска приложения появляется изображение запуска, затем начинается запрос, и экран становится пустым, затем запрос приходит и экран приложения обновляется и готов к работе, но это выглядит очень странно для пользователя, и я не хочу, чтобы это произошло.Parse query on Main Thread

С запросом в основной теме изображение запуска остается до тех пор, пока данные не поступят , и он выглядит намного лучше, а время загрузки составляет около 2-3 секунд ...

Это чувствует себя как плохая практика, но ...

Все советы?

С уважением,

Miguel Rojas Кортес

+5

Никогда не делайте сетевые материалы в основном потоке, если ваше устройство находилось в очень плохой сетевой среде, основной поток будет блокироваться в течение длительного времени. – KudoCC

+2

Согласен, вы должны отобразить свое собственное «загрузочное/запускающее» образ запуска в качестве начального вида для вашего приложения, а затем перейти к фактическому экрану после завершения сетевой задачи – Paulw11

ответ

4

Не блокировать основной поток, когда приложение запускает. Если сетевой запрос не достаточно быстрый, сторожевой таймер прекратит ваше приложение, и ваши пользователи дадут вам 1 отзыв.

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

Также не забывайте обрабатывать случай, когда пользователь запускает ваше приложение без подключения. Пользователь должен получить соответствующую ошибку и повторить попытку.

2

Вам просто нужно сделать немного больше работы здесь

  1. Создать отдельный контроллер СИБ/представление для стартового экрана вместо использования по умолчанию IOS один
  2. Когда контроллер вид запуска загружен, начинается запрос, и пока не делайте никакого перехода. Возможно, там есть какой-то индикатор загрузки.
  3. Когда все данные прибывают, сделайте переход к первому экрану (либо плавно, либо резко, IDK).

Выполнение запроса в основном потоке в этом случае может работать 90% времени, а остальные 10%, например, когда сеть является отслаивающейся, это нехороший опыт. Приложение будет просто висеть там, и у вас не будет возможности обработать возвращенные ошибки, так как основной поток заблокирован.