Как происходит запуск приложения
Продолжаем тему об удобстве пользования Windows и сегодня рассмотрим некоторые способы запуска программ, о которых вы могли не знать.
Надеюсь, что материал будет полезен как новичку, так и бывалым пользователям. А перед тем, как мы начнём, обращаю внимание, что один из способов мы уже ранее рассматривали в цикле статей по контекстному меню :
А теперь поехали про другие варианты! И начнём с самого простого.
💾Присвоение горячих клавиш приложениям
Для самых часто используемых приложений можно задавать свои горячие клавиши.
Жмём ПКМ (правую кнопку мыши) по ярлыку программы и выбираем свойства . В поле быстрый вызов начинаем нажимать нужные горячие клавиши, после чего жмём ОК .
💾Закрепление программ на панели зада
Этот способ корректно работает на любых современных версиях ОС (операционных систем) без ограничений.
Способы закрепления программ:
- Задержать ЛКМ (левая кнопка мыши) ярлык и перенести его не отпуская на панель задач, пока не появится надпись Закрепить в панель задач .
- Если нужная программа уже открыта, нажмите на панели задач по ней ПКМ (правой кнопкой мыши) и выберите Закрепить на панели задач .
Способы запуска:
- Клик ЛКМ по программе на панели задач откроет нужное приложение
- Горячие клавиши по порядковым номерам откроют до 9 программ по порядку, т.е. слева направо жмём Windows + цифру 1-9 на клавиатуре.
Минус способа - громоздкая панель задач с кучей хлама, ад для перфекциониста.
💾Закрепление программ на панели быстрого запуска
Тот же метод, что и выше, но вместо захламления панели задач будем захламлять панель плиток - быстрого запуска. Способ только для Windows 8 и выше.
Вариант первый - нажать ПКМ по ярлыку и выбрать там Закрепить на начальном экране .
Второй вариант - найти приложение в поиске и выбрать справа Закрепить на начальном экране .
Можно так же закрепить и уже открытое приложение с панели задач, нажав по нему ПКМ и выбрав Закрепить на начальном экране .
Теперь при нажатии кнопки Windows ил выбора ЛКМ кнопки Windows, в сетке будут ваши добавленные приложения, готовые к запуску.
💾Выполнить и поиск
Эти способы уж не то, чтобы быстрые, но иногда позволят сократить время на запуск приложений.
Способ через поиск в Windows так же поможет быстро открыть некоторые приложения или утилиты. Для Windows 7 жмём по пуску и в поиске пишем запрос, для Windows 10 можно нажать сочетание Windows + Q и продолжать вбивать запрос.
💾Панель инструментов
На десерт поведаю о самом на мой взгляд правильном подходе - использовании панели инструментов. В Windows 10 можно не только добавлять менюшки в контекстное меню, но и использовать альтернативу.
Жмём ПКМ (правая кнопка мыши) по панели задач -> Панели -> Создать панель инструментов. -> указываем путь к папке, где будет храниться наше меню. Это может быть любая произвольная папка в любом удобном вам месте .
Имя папки будет отображаться на панели задач как панель инструментов Имя папки будет отображаться на панели задач как панель инструментовПоловина дела сделано. Теперь остаётся закинуть в эту папку нужные вам ярлыки программ/утилит и готово, примерно такой может быть результат:
Недавно я провел исследование о main() методе в Java и то, как он служит точкой входа для любого приложения Java. Это заставило меня задуматься, а как насчет Android-приложений? Есть ли у них основной метод? Как они загружаются? Что происходит за кулисами до выполнения onCreate()? Майкл Бэйли очень подробно рассказал о том, как работает Main Thread, так что это быстрый обзор его доклада плюс дополнительная информация из Android Open Source Project (AOSP).
В этой статье мы рассмотрим:
Что происходит при запуске приложения
При запуске любого приложения, многое происходит глубоко внутри на уровне ядра, например начальная загрузка Zygote, загрузка классов в JVM, а для JVM — найти основной метод static void main(String args []) и вызывать его. В случае Android JVM находит основной метод main() в ActivityThread. Затем он вызывает main(), после чего ядро передает управление вашему приложению. Итак, мы нашли точку входа — ActivityThread, но прежде чем подробно изучить это, давайте посмотрим на дорожную карту процесса, чтобы визуализировать всю операцию.
1 Схема запуска приложения
Между вызовом метода main() и onCreate() в нашем MainActivity примерно 15 шагов, и в этой статье мы пройдем по ним. На рисунке 1 изображена общая схема запуска приложения, показывающая различные классы взаимодействия сверху и соответствующую цепочку методов. Шаги пронумерованы, и когда я обращаюсь к ним, я буду использовать следующие обозначения Process3 или Process14
Рисунок 1: Схема запуска приложения по шагам от вызова main() до onCreate() в MainActivity
2. Класс ActivityThread
В классе ActivityThread чуть более 6500 строк. Для краткости я определил самые важные для нас части. Давайте рассмотрим, что делает этот класс и связанный с ним основной метод, чтобы запустить нашу Activity
Рисунок 2: Метод main() в ActivityThread, который служит точкой входа для запуска вашего приложения.
Как видно в коде: метод main() выполняет три важных дела:
1. Подготавливает основной Looper (MainLooper) (Process 2)
2. Настройка Handler'a (Process 4)
3. Вызов метода Looper.loop() в главном потоке (MainThread) (Process 6)
2.1 Подготовка main looper (Process 2–3)
Основной Looper задается вызовом Looper.prepareMainLooper() (см. Строку 8 в коде). Это отмечает текущий случайный поток, который выполняет всю работу по вызову метода main() в качестве основного потока приложений. Именно так и именно здесь определяется знаменитый главный поток для приложения в Android!
2.2 Вызов Handler'a (Process 4-5)
Внутри класса ActivityThread существует приватный внутренний класс H, да-да, все верно, просто H, который наследуется от класса Handler (см. рис. 4 и 7). В 12й строке экземпляр H-обработчика устанавливается как главный Handler потока. Что очень интересно знать о классе H, как вы сами увидите позже, это то, что он содержит более 50 определений состояния/событий, в которых может находиться ваше приложение, например LAUNCH_ACTIVITY, PAUSE_ACTIVITY, BIND_SERVICE и т.д.
2.3 Вызов метод loop() у Looper’а (Process 6–7)
Обратите внимание, что в строке 18, если выполнение кода пойдет дальше чем Looper.loop() в 17 строке вдруг и приложение выйдет из цикла, то будет брошено исключение RuntimeException. Это говорит о том, что метод loop() в идеале никогда преждевременно не заканчивается. Мы увидим как это в следущем разделе.
3. Бесконечный loop() в Looper'е (Process 7,8,9)
Рисунок 3: Код внутри метода loop() в классе Looper'e
4. Запуск MainActivity (Process 10 to 15)
Рисунок 4: Приватный внутренний класс H и его handleMessage() метод
Один из случаев (cases) включает в себя запуск активности (строка 11), что интересно, так это то, что этот метод предназначен для обработки около 50 случаев, которые варьируются от возобновления, приостановки, запуска Activity, привязки Service'ов, обработки Receiver'ов, предоставления предупреждений lowMemory или trimMemory, когда память устройства заполняется и т. д.
В case LAUNCH_ACTIVITY вызывается метод handleLaunchActivity(), как показано в строке 13, см Process11 на схеме. Затем этот метод вызывает другой метод, называемый performLaunchActivity(), который возвращает объект Activity (см. Рис. 5, строка 7).
Рисунок 5: Метод handleLaunchActivity() в котором создается Activity
Рисунок 6: Класс Instrumentation наконец запускает Activity
На данный момент ваша Activity загружена c множеством полезных переменных и методов, которые можно использовать для создания вашего нового удивительного приложения для Android! Все это благодаря ActivityThread, умной работе Handler'a и Looper'a, и огромному классу Activity в 7600 строк кода, который позволяет аттачить фрагменты, получить контекст и легко управлять View's — и много еще чего.
Позвольте задать Вам простые вопросы по компьютерной грамотности: зачем нужны программы и кто их пишет?
Ответ первый: программы пишут системные администраторы для того, чтобы пользователи потом мучались в поисках ответа на известный вопрос Н.Г.Чернышевского «что делать» с этими программами.
Ответ второй: программы пишут программисты для того, чтобы пользователи могли их запустить, то есть, инициировать их выполнение.
Первый ответ – шутка, в которой есть доля правды. Второй ответ – правильный, с моей точки зрения (имхо).
Первый шаг в отношениях между пользователем и программой – это запуск программы пользователем. Затем можно выполнять в программе те действия, ради которых она и была создана.
Рассмотрим 7 способов запуска программ:
1) Из Главного меню можно запускать программы, которые в нем записаны.
- калькулятор,
- графический редактор Paint,
- текстовые редакторы Блокнот и WordPad,
- служебные программы по обслуживанию диска
- и др.
Стандартные программы в главном меню Windows XP
Эту группу программ называют Стандартные, потому что она входит в состав операционной системы и устанавливается вместе с установкой операционной системы.
2) При помощи двойного щелчка по значку программы или по ярлыку на Рабочем столе Windows.
3) Щелчок по значку программы в Панели задач Windows. Например, на рисунке после щелчка по значку будет открыт текстовый редактор MS Word.
В открывшемся окне Запуск программы нужно указать открываемый файл, причем можно воспользоваться для этого кнопкой Обзор, которая откроет окно просмотра содержимого дисков и папок. В нем, открывая папки, нужно выделить и открыть запускающий файл программы. По умолчанию во всех папках будут показаны только запускающие и командные файлы, а также ярлыки.
5) Автоматический запуск программ, например:
- при начальной загрузке Windows. Для того, чтобы это сделать, следует пройти по маршруту Пуск – Программы – Автозапуск.
Если поместить программы в меню Автозагрузка, то они будут автоматически запущены при начальной загрузке Windows.
- при вставке в дисковод CD или DVD диска. При этом автоматически запускается программа, записанная на диске, правда, если автором диска не предусмотрено иное действие.
Иногда для избежания заражения вирусом автоматический запуск компакт-дисков отключают и сначала проверяют диск антивирусом.
- по заданному графику. Такую возможность предоставляет встроенная в Windows программа-планировщик.
7) Двойной щелчок по значку или имени документа, обрабатываемого той или иной программой. Например, если щёлкнуть по значку с буквой «W», запустится программа MS Word.
Упражнения по компьютерной грамотности:
1. Запустите Калькулятор из Главного меню Windows.
2. С помощью команды «Выполнить» в Главном меню Windows, используя кнопку «Обзор», запустите программу MS Word. Для этого можно кликнуть по любому текстовому документу со значком, содержащем букву «W».
В этом разделе содержатся сведения по следующим вопросам:
- Что происходит при запуске, приостановке, возобновлении и завершении работы приложения универсальной платформы Windows (UWP).
- Запуск приложений с помощью URI или активации файла
- Использование служб приложений, позволяющих приложению универсальной платформы Windows (UWP) обмениваться данными и функциями с другими приложениями.
- Использование фоновых задач, позволяющих приложению UWP выполнять работу, даже если приложение не находится на переднем плане.
- Обнаружение подключенных устройств, запуск приложения на другом устройстве и взаимодействие с этим приложением на удаленном устройстве, путем создания единообразного пользовательского интерфейса на разных устройствах.
- Выбор правильной технологии для расширения возможностей и разделения на компоненты вашего приложения.
- Добавление и настройка экрана-заставки для приложения.
- Создание расширения для вашего приложения с помощью пакетов, которые можно установить из Microsoft Store.
Жизненный цикл приложений
В этом разделе описывается жизненный цикл приложения универсальной платформы Windows (UWP) для Windows 10 с момента его активации и до закрытия.
Раздел | Описание |
---|---|
Жизненный цикл приложения | Узнайте о жизненном цикле приложения UWP и о том, что происходит при загрузке, приостановке и возобновлении работы вашего приложения системой Windows. |
Обработка предварительного запуска приложения | Узнайте, как обрабатывать предварительный запуск приложения. |
Обработка активации приложения | Узнайте, как обрабатывать активацию приложения. |
Обработка приостановки работы приложения | Узнайте, как сохранить важные данные приложения, когда система приостанавливает его работу. |
Обработка возобновления работы приложения | Узнайте, как обновить отображаемое содержимое, когда система возобновляет работу приложения. |
Освобождение памяти при переходе приложения в фоновый режим | Узнайте, как уменьшить объем используемой приложением в фоновом режиме памяти, чтобы работа приложения не прекратилась. |
Задержка приостановки приложения с помощью расширенного сеанса выполнения | Узнайте, как использовать расширенный сеанс выполнения для обеспечения работы приложения в свернутом состоянии |
Запуск приложений
Раздел | Описание |
---|---|
Создание консольного приложения для универсальной платформы Windows | Узнайте, как создать приложение универсальной платформы Windows, выполняемое в окне консоли. |
Создание нескольких экземпляров приложения UWP | Узнайте, как создать приложение универсальной платформы Windows, позволяющее использовать несколько его экземпляров. |
В разделе Запуск приложения с помощью URI подробно описано, как использовать универсальный код ресурса (URI) для запуска приложения.
Раздел | Описание |
---|---|
Запуск приложения по умолчанию для URI | Узнайте, как запускать приложение по умолчанию для универсального кода ресурса (URI). Универсальные коды ресурсов (URI) позволяют запустить приложение, чтобы выполнить определенную задачу. В этом разделе также приводится обзор множества схем URI, встроенных в Windows. |
Обработка активации URI | Узнайте, как зарегистрировать приложение в качестве стандартного обработчика определенного имени схемы универсального кода ресурса (URI). |
Запуск приложения для результатов | Узнайте, как запустить приложение из другого приложения и обмениваться данными между двумя приложениями. Эта процедура называется запуском приложения для результатов. |
Выбор и сохранение звуковых сигналов с помощью схемы URI ms-tonepicker | В этом разделе описывается схема URI ms-tonepicker и порядок ее использования для отображения средства выбора звуковых сигналов с целью выбора звукового сигнала, сохранения звукового сигнала и получения понятного имени звукового сигнала. |
Запуск приложения "Параметры" для Windows | Узнайте, как запустить приложение "Параметры" для Windows из вашего приложения. В этом разделе приводится описание схемы URI ms-settings. Используйте эту схему URI для запуска приложения "Параметры" для Windows на определенных страницах параметров. |
Запуск приложения Microsoft Store | В этом разделе описывается схема URI ms-windows-store. Ваше приложение может использовать эту схему URI для запуска приложения UWP на определенных страницах в Store. |
Запуск приложения "Карты Windows" | Узнайте, как запустить приложение «Карты Windows» из вашего приложения. |
Запуск приложения "Люди" | В этом разделе приводится описание схемы URI ms-people. Ваше приложение может использовать эту схему URI для запуска приложения "Люди" для конкретных действий. |
Поддержка привязки приложений к Интернету с помощью обработчиков URI приложения | Повышайте интерес пользователей к вашему приложению с помощью обработчиков URI приложения. |
В разделе Запуск приложения через активацию файла рассказывается о том, как настроить приложение для запуска при открытии определенного типа файла.
Раздел | Описание |
---|---|
Запуск приложения по умолчанию для файла | Узнайте, как запускать приложение по умолчанию для файла. |
Обработка активации файла | Узнайте, как зарегистрировать приложение в качестве обработчика по умолчанию для определенного типа файла. |
См. другие статьи, связанные с запуском приложения, ниже.
Раздел | Описание |
---|---|
Продолжение активности пользователей даже на разных устройствах | Обеспечьте интерес пользователей к вашему приложению на разных устройствах, запуская приложение с того места, где пользователь остановился. |
Запуск приложения с помощью автозапуска | Автозапуск можно использовать для добавления приложения в список вариантов при подключении пользователем устройств к компьютеру. Это могут быть как устройства томов, такие как USB-устройства флэш-памяти, SD-карты или DVD-диски, так и прочие устройства, такие как камеры или проигрыватели мультимедиа. |
Зарезервированные имена файлов и схем URI | В этом разделе перечислены зарезервированные имена файлов и схем URI, которые недоступны в приложении. |
Службы и расширения приложений
В разделе Службы приложений и расширения описывается, как интегрировать службы приложений с приложением UWP, чтобы разрешить общий доступ к данным и функциям между приложениями.
Раздел | Описание |
---|---|
Создание и использование службы приложений | Узнайте, как написать приложение универсальной платформы Windows (UWP), которое может предоставлять службы другим приложениям UWP, и как использовать эти службы. |
Преобразование службы приложений для ее запуска в одном процессе с ведущим приложением | Преобразуйте код службы приложений, выполняемый в отдельном фоновом процессе, в код, выполняемый в одном процессе с поставщиком службы приложений. |
Расширение возможностей приложения за счет его служб, расширений и пакетов | Определите, какую технологию следует использовать для расширения и разбиения приложения на компоненты, и прочитайте краткий обзор каждого метода. |
Создание и использование расширения приложения | Создавайте и размещайте расширения приложений универсальной платформы Windows (UWP), расширяющие возможности приложения с помощью пакетов, которые пользователи могут установить из Microsoft Store. |
Фоновые задачи
В разделе Фоновые задачи показано, как обеспечить выполнение облегченного кода в фоновом режиме в ответ на триггеры.
Удаленные системы
В разделе Подключенные приложения и устройства (Project Rome) описано, как использовать платформу удаленных систем для обнаружения удаленных устройств, запуска приложения на удаленном устройстве и взаимодействия со службой приложений на удаленном устройстве.
Раздел | Описание |
---|---|
Обнаружение удаленных устройств | Узнайте, как обнаруживать устройства, к которым можно подключиться. |
Запуск приложения на удаленном устройстве | Узнайте, как запустить приложение на удаленном устройстве. |
Обмен данными с удаленной службой приложений | Узнайте, как взаимодействовать с приложением на удаленном устройстве. |
Подключение устройств с помощью удаленных сеансов | Предоставляйте общие возможности на нескольких устройствах за счет их объединения через удаленный сеанс. |
Экраны-заставки
В разделе Экраны-заставки описывается, как установить и настроить экран-заставку вашего приложения.
Читайте также: