Статьи

Особенности дизайна Windows Phone 7

Windows Phone 7 — потрясающая платформа. Он доставляет то, что обещал. Но опыт не на 100% завершен. Теперь мы можем завершить процесс, разработав несколько классных приложений.

Теперь мы все знаем, что разработчик Silverlight может легко разрабатывать приложения для Windows Phone. Да, у нас все еще есть все преимущества Drag and Drop, но мы должны учитывать при разработке приложения, что целевым устройством является телефон с одноядерным процессором 1 ГГц. Большинство из нас будут разрабатывать приложения на ядре. 2 дуэт машины.

С тех пор, как я поэкспериментировал с опытом разработки Silverlight, я не уверен, применимы ли эти пункты (как есть) к разработке игр XNA. Но все же, здесь это идет:

1. Сохраняйте пользовательский опыт простым:

Среда выполнения Silverlight на телефоне не обладает достаточной вычислительной мощностью, поэтому она была соответственно оптимизирована. Есть определенные моменты, которые необходимо учитывать при разработке пользовательского интерфейса для телефона.

— Будь проще

Менее продуманный пользовательский интерфейс означает меньше кода — меньше активности, что приведет к повышению производительности.

— ограничить активность в потоке пользовательского интерфейса

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

— Используйте нить Render

Поток рендеринга — это отдельный поток, который будет заботиться о простых анимациях и т. Д. Это приведет к более плавному взаимодействию с пользователем (помните, что на первом месте стоит взаимодействие с клиентами)

— Используйте графический процессор телефона

У нас есть специальный графический процессор на телефоне. Используй это! А так как ваша единственная программа, которая работает на переднем плане, вы можете разработать свое приложение для использования графического процессора (и под этим я подразумевал оправданное использование, помните, что вы работаете на небольшом портативном устройстве)

Если вы заинтересованы в более подробном изучении, на MIX’10 был проведен хороший сеанс, посвященный производительности Silverlight на Windows Phone. Сессия Симы Рамчандани о производительности Silverlight на Windows Phone .

2. Убедитесь, что вы загружаете только необходимые данные:

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

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

Это приведет к повышению общей производительности приложений, а также к увеличению времени автономной работы телефона (очень важно, IMO)

3. Быстро деактивировать

В WM 6.x у приложений никогда не было опции выхода. Никогда не было события, которое сообщало бы нам о том, что приложение собирается быть убитым. Таким образом, чтобы преодолеть эту опасность, люди периодически сохраняли состояние приложения.

В Windows Phone 7 у вас есть событие «Закрытие приложения» и «Деактивация приложения». (Не уверен, что это значит?, Прочитайте мой пост о жизненном цикле приложения WP7). Когда вы получаете это событие, вы сохраняете данные в изолированном хранилище телефона / или какой-либо серверной службе и извлекаете их обратно, когда приложение снова активируется.

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

Что мы можем сделать, чтобы преодолеть это, так это периодически спасать государство (когда люди говорят, что СТАРОЕ ЗОЛОТО, они не шутят, не так ли?)

Мы можем сделать что-то на этих линиях:

   // Constructor
    public App()
    {
        UnhandledException += Application_UnhandledException;

        // Standard Silverlight initialization
        InitializeComponent();

        // Phone-specific initialization
        InitializePhoneApplication();

        // Add a Timer to save state Periodically
        DispatcherTimer dt = new DispatcherTimer();
        dt.Interval = new TimeSpan(0, 0, 0, 10); // 10 seconds
        dt.Tick += new EventHandler(dt_Tick);
    }

    void dt_Tick(object sender, EventArgs e)
    {
        //Dirty Flag is set, when something that has to saved
        // in the application's state has changed.
        if (_dirtyFlag)
        {
            // Save state incrementally.
        }
    }

    // Code to execute when the application is deactivated (sent to background)
    // This code will not execute when the application is closing
    private void Application_Deactivated(object sender,
        DeactivatedEventArgs e)
    {
        System.Diagnostics.
            Debug.WriteLine("Go to sleep...zzz");
        if (_dirtyFlag)
        {
            // Only save state if there is a change.
        }
    }

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

Они могут быть неприменимы ко всем приложениям, которые мы напишем на WP7, но я считаю, что это «Полезно знать / Что стоит обдумать при разработке моего приложения WP7».

Любые предложения / комментарии / мысли / злоупотребления приветствуются.

Источник:  http://sudheerkovalam.wordpress.com/2010/07/26/windows-phone-7-design-considerations/