Приложение MonoTouch выходит из строя при возвращении из фонового режима

#xamarin.ios #monodevelop

#xamarin.ios #monodevelop

Вопрос:

У меня есть приложение MonoTouch, в котором есть досадная ошибка, и я не знаю, как ее устранить. Проблема, по-видимому, возникает, когда приложение находилось в фоновом режиме значительное количество времени (например, пару часов), а затем вы возвращаетесь к приложению. После возвращения из фонового режима приложение будет работать в течение короткого периода (около 10 секунд), а затем оно полностью зависает, и ни одна из вкладок, кнопок и т.д. Не реагирует. Примерно через 10 секунд iOS завершает работу приложения. В журнале сбоев я вижу следующее сообщение:

 <appname> failed to resume in time
  

Самое неприятное в этой ошибке то, что, похоже, она никогда не возникает при тестировании с помощью отладчика; Я запускаю приложение в режиме отладки и тестирую его целую вечность без каких-либо проблем. Я также отправляю его в фоновый режим и возвращаю без каких-либо проблем. Итак, пока кажется, что это происходит только тогда, когда приложение долгое время находилось в фоновом режиме … и это происходит в разных точках приложения, никогда в одной и той же точке. Есть ли у кого-нибудь какие-либо идеи о том, что могло бы произойти и как бы я приступил к отладке подобной проблемы? Спасибо.

Комментарии:

1. На какой версии MT вы работаете? У MT до версии 4.0.3 были проблемы с MkProtect. Но я поддерживаю ответ Эдуардо: вы каким-то образом заставляете свое приложение зависать.

Ответ №1:

Вероятно, ваше приложение выполняет что-то, что занимает больше 10 секунд при возвращении из фонового режима. iOS вынуждает вас вернуться в течение этого заранее определенного периода, иначе это убьет ваше приложение за «неправильное поведение».

Ваш компьютер в тысячи раз быстрее устройства. Вот почему вы видите проблему только в симуляторе.

Я бы проверил ваш класс AppDelegate, чтобы посмотреть, что происходит в методе WillEnterForeground, который может занять так много времени.