iPhone загрузить / проанализировать XML-файл при запуске приложения? - PullRequest
0 голосов
/ 06 декабря 2011

Я работаю над приложением раскадровки, в котором одним из представлений с вкладками является mapView, который загружает точки из XML-файла на сервер. Каждый раз, когда приложение запускается и эта вкладка в контроллере панели вкладок выбирается, загрузка файла и его анализ занимает секунду. Что еще хуже, если нет доступа к Интернету, приложение вылетает: /

Я хотел бы попытаться использовать мой getDataService (который загружает и анализирует) во время заставки приложения вместо ViewDidLoad в viewcontroller (это в appdelegate в didFinishLaunchingWithOptions?) И пусть он тогда выполняет свою функцию, или в фоновом режиме и продолжайте работать в фоновом режиме, если приложение закрыто.

Тогда я бы хотел, чтобы массив был сохранен для будущего использования (имеет ли это отношение к словарям?), И перезагружал и анализировал только xml, когда приложение полностью перезапустилось.

Как я могу делать эти вещи? Если у кого-то есть примеры или ссылки на учебники и примеры, которые делают это, я был бы очень благодарен. Я давно искал, но не знаю, что искать.

Ответы [ 3 ]

1 голос
/ 06 декабря 2011

На самом деле НЕ делайте этого во время didFinishLaunchingWithOptions:

Причина в том, что iOS убьет любое приложение, загрузка которого занимает слишком много времени.У меня нет соответствующей документации, но iOS ожидает, что ваше приложение завершит запуск в течение определенного периода времени (я полагаю, что это займет около 3 секунд или около того), и если этот метод не будет завершен в течение этого периода времени, ваше приложение считаетсязависнуть, и iOS убьет его.

Рекомендуемый метод заключается в том, что если у вас долго выполняется код, это запустить фоновый поток с кодом на нем.

Вся идея в том, чтобы пользователь как можно быстрее получил доступный интерфейс.Обратите внимание, что отладчик отключает функцию уничтожения iOS, он активен только тогда, когда ваш код находится на устройстве, и вы не можете отключить его программно.Таким образом, ваш код будет выглядеть нормально при разработке, но потерпит неудачу, когда вы запустите его по-настоящему.

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

0 голосов
/ 06 декабря 2011

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

Если ваше приложение не выйдет из строя изящно при запуске без подключения к Интернету, Apple отклонит его.Покажите соответствующее сообщение в этой ситуации, которое советует пользователю что-то подобное:

1) Нет подключения к Интернету, поэтому функциональность этого приложения может быть ограничена

2) Нет подключения к Интернету, иэто приложение не будет работать с ним

0 голосов
/ 06 декабря 2011

Если вы сделаете это с помощью функции AppDelegate appDelegate и назначите его свойству, которое вы определили для AppDelegate, ваш экран загрузки все равно будет виден, пока ваши данные загружаются и анализируются.

- (BOOL)application:(UIApplicatioN *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    NSLog(@"loading!");
    sleep(5); //delay to show you that the log happens before the loading screen goes away
    return YES;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...