Одним из наиболее спорным вопросов, обсуждаемых при
рассмотрении Windows Phone 7 Series, является многозадачность, а точнее
ее отсутствие. Как выяснилось, этот вопрос вызывает озабоченность у
большого числа пользователей и разработчиков. Давайте подробнее
рассмотрим этот вопрос. Для этого обратимся к реализации
многозадачности в Windows Phone Classic (старое название - Windows
Mobile 5.x, 6.x).
В Windows Phone Classic многозадачность была реализована в полной мере. Это означает, что в один и тот же момент времени без приостановки могут выполнятся несколько приложений. Это, по сути, некоторый аналог настольной платформе, где этот процесс выглядит аналогичным образом. Однако, давайте подумаем - а действительно ли использование подобного подхода для мобильной платформы также обоснованно, как и для настольной?
Давайте попробуем представить типичный сценарий использования мобильных устройств. Наверняка он будет включать в себя использование нескольких приложений поочередно в течении длительного количества времени. Например, в данный момент я использую несколько таких приложений: просмотр фотографий, чтение электронной почты, чтение ленты Twitter, просмотр текущего трафика, Windows Media Player, редактирование и просмотр документов Microsoft Office, просмотр документов PDF, калькулятор и др. При длительном использовании устройства можно обнаружить, что в памяти загружены все или часть этих приложений, при этом в данный момент они совершенно не нужны, поскольку нет необходимости в их использовании. Тем не менее, в данный момент они действительно загружены в память и исполняются, загружают центральный процессор, занимают память и расходуют батарею. Конечно, некоторая часть пользователей внимательно следит за тем, чтобы в данный момент были загружены только необходимые приложения, но так делают далеко не все. Именно по этой причине использование подобного подхода не является обоснованным для мобильной платформы.
В некоторых мобильных платформах существует другая крайность - возможность запускать в каждый момент времени только одно приложение. Такой подход также не является правильным, поскольку иногда все же необходимо запускать одновременно несколько приложений. Классический пример - использование проигрывателя музыки в момент использования других приложений, например, чтении почты.
Разработчики Windows Phone 7 Series решили не прибегать к крайностям и выбрали золотую середину. В Windows Phone 7 Series в каждый момент времени может выполнятся только одно запущенное приложение. При этом существует набор системных приложений, которые могут выполняться "в фоне". При переходе на главное окно или переключении на другие окна, текущее приложение переключается в приостановленное состояние. Что интересно, операционная система в произвольный момент времени может вовсе удалить этот процесс из памяти. Поэтому в момент приостановки следует сохранить состояние приложения, а в момент возврата к приложению - восстановить это состояние. Служебные механизмы Windows Phone 7 Series самостоятельно выполняют действия по сохранению и восстановлению состояния, поэтому разработчику приложения не нужно об этом заботиться. Пользователь при переключении между приложениями также не заметит никакой разницы, если приложение было удалено из памяти - он вернется к тому состоянию, в котором находилось приложение в последний раз.
Существует также еще один тип событий, которые могут прерывать выполнение приложения. Однако, в отличии от предыдущего сценария, в данном случае прерывание происходит на короткий промежуток времени. Такие прерывания могут случаться, например, при поступлении входящего вызова или при срабатывании будильника. В этом случае приложение продолжает свою работу в фоновом режиме. Однако, если приложение требует от пользователя постоянного взаимодействия (например, игровое приложение), разработчик этого приложения может реагировать на подобные события и принудительно приостанавливать работу приложения на время обработки внешнего события.
Описанный выше процесс с точки зрения мобильной платформы является более правильным, поскольку позволяет не тратить ресурсы на выполнение ненужных фоновых приложений. Более того, в этом случае состояние приложения сохраняется и восстанавливается в автоматическом режиме, что несомненно очень удобно с точки зрения разработчика приложений.
Однако, ряд задач не могут быть реализованы при использовании описанного процесса. Дело в том, что есть некоторые задачи, которые требуют фонового исполнения. Например, это может быть приложение для записи GPS-трека пользователя или будильник, который должен сработать в определенный момент. К сожалению, в той версии Windows Phone 7 Series, которая была представлена на MIX 2010 эта функциональность не реализована. Однако, команда разработчиков в данный момент занимается этим сценарием и в ближайшее время мы с вами сможем попробовать реализовать и такие сценарии.
Таким образом, видно, что подход для организации работы множества приложений в Windows Phone 7 Series стал более эффективным, чем он был реализован ранее, в Windows Phone Classic.
Источник: http://blog.zwezdin.com/ru
В Windows Phone Classic многозадачность была реализована в полной мере. Это означает, что в один и тот же момент времени без приостановки могут выполнятся несколько приложений. Это, по сути, некоторый аналог настольной платформе, где этот процесс выглядит аналогичным образом. Однако, давайте подумаем - а действительно ли использование подобного подхода для мобильной платформы также обоснованно, как и для настольной?
Давайте попробуем представить типичный сценарий использования мобильных устройств. Наверняка он будет включать в себя использование нескольких приложений поочередно в течении длительного количества времени. Например, в данный момент я использую несколько таких приложений: просмотр фотографий, чтение электронной почты, чтение ленты Twitter, просмотр текущего трафика, Windows Media Player, редактирование и просмотр документов Microsoft Office, просмотр документов PDF, калькулятор и др. При длительном использовании устройства можно обнаружить, что в памяти загружены все или часть этих приложений, при этом в данный момент они совершенно не нужны, поскольку нет необходимости в их использовании. Тем не менее, в данный момент они действительно загружены в память и исполняются, загружают центральный процессор, занимают память и расходуют батарею. Конечно, некоторая часть пользователей внимательно следит за тем, чтобы в данный момент были загружены только необходимые приложения, но так делают далеко не все. Именно по этой причине использование подобного подхода не является обоснованным для мобильной платформы.
В некоторых мобильных платформах существует другая крайность - возможность запускать в каждый момент времени только одно приложение. Такой подход также не является правильным, поскольку иногда все же необходимо запускать одновременно несколько приложений. Классический пример - использование проигрывателя музыки в момент использования других приложений, например, чтении почты.
Разработчики Windows Phone 7 Series решили не прибегать к крайностям и выбрали золотую середину. В Windows Phone 7 Series в каждый момент времени может выполнятся только одно запущенное приложение. При этом существует набор системных приложений, которые могут выполняться "в фоне". При переходе на главное окно или переключении на другие окна, текущее приложение переключается в приостановленное состояние. Что интересно, операционная система в произвольный момент времени может вовсе удалить этот процесс из памяти. Поэтому в момент приостановки следует сохранить состояние приложения, а в момент возврата к приложению - восстановить это состояние. Служебные механизмы Windows Phone 7 Series самостоятельно выполняют действия по сохранению и восстановлению состояния, поэтому разработчику приложения не нужно об этом заботиться. Пользователь при переключении между приложениями также не заметит никакой разницы, если приложение было удалено из памяти - он вернется к тому состоянию, в котором находилось приложение в последний раз.
Существует также еще один тип событий, которые могут прерывать выполнение приложения. Однако, в отличии от предыдущего сценария, в данном случае прерывание происходит на короткий промежуток времени. Такие прерывания могут случаться, например, при поступлении входящего вызова или при срабатывании будильника. В этом случае приложение продолжает свою работу в фоновом режиме. Однако, если приложение требует от пользователя постоянного взаимодействия (например, игровое приложение), разработчик этого приложения может реагировать на подобные события и принудительно приостанавливать работу приложения на время обработки внешнего события.
Описанный выше процесс с точки зрения мобильной платформы является более правильным, поскольку позволяет не тратить ресурсы на выполнение ненужных фоновых приложений. Более того, в этом случае состояние приложения сохраняется и восстанавливается в автоматическом режиме, что несомненно очень удобно с точки зрения разработчика приложений.
Однако, ряд задач не могут быть реализованы при использовании описанного процесса. Дело в том, что есть некоторые задачи, которые требуют фонового исполнения. Например, это может быть приложение для записи GPS-трека пользователя или будильник, который должен сработать в определенный момент. К сожалению, в той версии Windows Phone 7 Series, которая была представлена на MIX 2010 эта функциональность не реализована. Однако, команда разработчиков в данный момент занимается этим сценарием и в ближайшее время мы с вами сможем попробовать реализовать и такие сценарии.
Таким образом, видно, что подход для организации работы множества приложений в Windows Phone 7 Series стал более эффективным, чем он был реализован ранее, в Windows Phone Classic.
Источник: http://blog.zwezdin.com/ru