Как периодически вызывать метод iPhone при работе приложения в фоновом режиме, используя NSTimer на переднем плане - PullRequest
0 голосов
/ 07 июля 2011

Я использую [NSTimer scheduledTimerWithTimeInterval ...], который отлично работает, когда мое приложение находится на переднем плане, но когда оно у меня на заднем плане, оно не работает.

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

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

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

В случае, если это имеет какое-то значение, я использую XCode 3 и 4.0SDK.

1 Ответ

0 голосов
/ 08 июля 2011

Я обнаружил, что после перезагрузки компьютера приложение переходит на applicationDidEnterBackground.

Но для того, чтобы сделать мой вызов веб-службы, мне нужно было выполнять синхронный вызов в фоновом режиме, поскольку вызов асинхроннопросто молча провалитьсяЯ использую ASIHttpRequest (http://allseeing -i.com / ASIHTTPRequest / ).

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

Чтобы все это работало, мне пришлось поместить location вinfo.plist, который может использовать больше батареи.

...