- Мифы о многозадачности и прожорливости Android
- Activity
- Broadcast Receivers
- Сервисы
- Заключение
- Несколько простых способов как открыть 2 приложения на одном экране на Android
- Что такое многоэкранный режим и зачем он нужен
- Как включить разделение экрана на Андроиде
- Как разделить экран смартфона на две части
- Способ 1: с помощью тапов
- Способ 2: с помощью панели быстрых настроек
- Способ 3: с помощью программы Floating Apps Free
- Возможности Floating Apps Free:
- Как разделить экран планшета на 2 части
- Видеоинструкция
- Выводы
Мифы о многозадачности и прожорливости Android
Эта заметка написана по мотивам подкаста Юрия Трухина и Эльдара Муртазина, где они не очень корректно высказались про то, как устроена многозадачность в Android и зачем ему «таскменеджеры». Многозадачность в Android такая же, как в готовящемся обновлении Mango для WP7, с точностью до деталей реализации и названий в архитектурных решениях. Некорректное понимание многозадачности в Android я встречаю достаточно часто и думаю, что во многом это вина Google, они не могут нормально объяснить обычному пользователю, как всё внутри устроено, и что Task Manager’ы в большинстве своём скорее вредны, нежели полезны.
Итак, основной миф: если открыть много программ в Android, то кончится память, программы будут жрать ресурсы, а телефон начнет тормозить.
Отчасти так, но тут есть тонкий момент. Дело в том, что все программы для Android модульные. То есть, программа состоит из множества кусочков, которые работают независимо друг от друга (если явно не вызывают другой модуль). Наличие в памяти программы совершенно не означает того, что она вся используется в данный момент. Программа может вообще не исполнять никакого кода, а в памяти висеть просто потому, что память есть, и почему бы не держать приложение в кеше, чтобы последующая активация произошла быстрее. Естественно, когда память будет нужна другим приложениям, самое ненужное (есть система приоритетов) будет выгружено. Это то же самое, что и концепция «захоронения» в WP7. В данном случае «таскменеджеры» просто вредны, так как они выгружают приложения, которые потом будут загружаться снова, тратя ресурсы и время.
Само по себе наличие приложения в памяти не тормозит телефон, освобождать память ради большей цифры free mem — бесполезное занятие, от этого ничего не изменится.
Но всё же, определённая толика правды тут есть, и сейчас я расскажу, почему.
Данная часть техническая, описывающая архитектуру программ на Android. Но хочется рассказать про внутреннее устройство, чтобы у читателей сложилось понимание устройства данной операционной системы.
В Android все модули в программе делятся на три основных типа:
- Activity
- Broadcast Receivers
- Services
Рассмотрю их подробнее на виртуальном примере музыкального плеера.
Activity
Это окна нашего приложения. Одно окно — одна активити. В нашем воображаемом музыкальном плеере окно с названием песни, окна с элементами управления и картинкой альбома — это активити. Их время жизни очень короткое, когда вы переключаетесь на другое окно (даже в пределах одного приложения), то всё ставится на паузу, а через некоторое время освобождаются все ресурсы, и активити убивается. То есть, в фоне ничего не рисуется и не может рисоваться. Как только вы переключились с нашего плеера, где был красивый эквалайзер, можно не беспокоиться, что этот эквалайзер будет продолжать отрисовываться где-то в фоне, его больше нет. Эта часть приложения не работает совсем.
Если приложение состоит только из активити (например, калькулятор), то когда мы с него переключились — оно больше не ест никаких ресурсов. Просто сидит тихо — мирно в кеше, ожидая, что вы вернётесь.
Broadcast Receivers
Тут у меня вышла сложность с нормальным переводом этой фразы на русский, поскольку дословный «приёмники широковещательных сообщений» выглядит весьма коряво, буду выкручиваться по ситуации.
Это части программ, отвечающие за приём глобальных сообщений. Их много стандартных, плюс, можно ожидать абсолютно любое сообщение, сказав про это системе (это бывает полезно для связи между различными программами). Сообщения бывают самые разные, например, о том, что появилась WiFi-сеть и можно бежать в интернет за новыми песнями, вставили телефон в док-станцию — рисуется красивое окошко с часиками. Нажали кнопку паузы на гарнитуре — остановим воспроизведение. Собственно, таким образом можно отправить картинку в твиттер из галереи: твиттер регистрируется на событие вида «могу шарить картинки», галерея посылает событие всем подобным приложениям, и пользователь выбирает, что он хочет сделать с картинкой. Благодаря этому и обеспечивается гибкость Android в установке различных приложений.
Данный модуль живёт ровно столько, сколько требуется на обработку сообщения от системы. Приложение остаётся висеть в памяти на случай, если система пошлёт ещё одно такое же сообщение, и вместо запуска приложения заново оно будет уже в памяти, готовое к обработке.
Но вот тут уже начинаются хитрости с потреблением ресурсов. Если приложение зарегистрировало себя на получение сообщений глобально (в манифесте), то система будет запускать его всегда и убивать его «таскменеджером» — вредно и бесполезно. Но приложение может зарегистрировать себя на получение событий программно, тогда оно будет их получать, пока запущено. Например, музыкальный плеер должен получать события от гарнитуры для управления воспроизведением и ставиться на паузу в случае звонка. Если он не запущен — ему эти события не важны, он на них не реагирует.
Вот тут иногда можно и убить ненужное приложение, если оно сидит и получает сообщения и никак не может угомониться (особенно если памяти в телефоне много). Один из примеров: музыкальный плеер и плеер подкастов, которые, будучи запущенными вместе, могут драться за управление музыкой.
Сервисы
Вот мы и подошли к самому главному потребителю ресурсов. Сервисы, эта часть программы, которая должна работать в фоне, и она предназначена ровно для этого и ни для чего больше. Это вот те самые маленькие блоки, которые работают при многозадачности и в Android, и в iOS, и в WP7 Mango.
Это сервисы синхронизации, обновления, загрузки. Для музыкального плеера играть музыку должен именно сервис! Даже во время звонка часть программы, отвечающая за разговор — это сервис, который нужен, чтобы разговор шёл, а пользователь мог играть в Angry Birds в это время.
Собственно, это и есть основные потребители ресурсов, но таскменеджеры их очень плохо определяют, лучше на них смотреть в стандартных настройках приложений (Running Services).
Но Android может убивать сервисы при нехватке памяти тоже, хоть они и имеют приоритет по времени жизни, что удивительно, он потом их постарается запустить заново, чтобы вернуть всё как было. Самый высокий приоритет у сервисов с иконкой в статусбаре, как это глупо ни звучит. Просто эти сервисы своим видом демонстрируют пользователю, что они существуют и работают, и Android их бережёт до последнего. Именно поэтому большинство музыкальных плееров рисуют иконку в статус баре, такой вот архитектурный финт ушами.
Небольшая ремарка про аналог сервисов в Windows Phone 7 (в грядущем релизе Mango), там подобный функционал называется «Background Agents» (т.е. агенты, работающие в фоне). Агенты более специализированные и реализуются под конкретную задачу (т.е. специальный агент по проигрыванию музыки, специальный агент для скачивания файлов). Есть агенты для своих задач, но WP7 ограничивает их 10% CPU и 5 МБ памяти, то есть они не могут сильно повлиять на производительность телефона. У агентов есть ограничение на функционал, например, они не могут использовать камеру и сенсоры. Т.е. нельзя будет сделать видеорегистратор и шагомер (GPS-можно). Агенты выводятся в отдельный хост-процесс, но это детали внутренней организации системы. Принципиально отсутствует Task Manager, как результат, пользователь не может насильно остановить работу агента.
В общем, если с WP7 вдаваться в детали, то там реализация выглядит отличающейся, но если смотреть глазами пользователя, то задача будет решаться одна и та же: небольшая часть приложения, которая делает конкретную часть работы.
Заключение
Важно понимать, что у приложений могут работать разные части, с разными свойствами, и убивая приложение, вы можете просто заставить систему заново загрузить его. Убивать стоит только коряво написанные приложения (да, в маркете с отсутствием модерации таких хватает). При этом работают только маленькие кусочки программ, все остальные части спят хорошим сном и никак не влияют на работу системы.
Источник
Несколько простых способов как открыть 2 приложения на одном экране на Android
Часто работая на компьютере, мы привыкаем к режиму многозадачности на устройстве, когда открыто множество вкладок, между которыми мы часто и быстро переключаемся. Однако далеко не на всех смартфонах поддерживается такой режим. Даже несмотря на то, что размеры экранов телефонов становятся все больше, пользователям все равно приходится открывать только одно приложение.
Поэтому, если вы задаетесь вопросом, как открыть два приложения на одном экране на Андроид эта статья для вас. Стоит отметить, что настройка разделения дисплея для одновременного использования двух программ стала доступна на Android 7 версии.
Что такое многоэкранный режим и зачем он нужен
Функция разделения дисплея представляет собой работу смартфона в режиме многозадачности, с помощью которого пользователь может использовать одновременность несколько утилит. Этот режим не требует переключения между окнами. В таком случае можно одновременно смотреть кино и общаться в мессенджере. Данную функцию поддерживают некоторые игры, поэтому можно выполнить какое-либо действие на телефоне, не отвлекаясь от игры.
При включенном режиме разделения экрана запущенные утилиты работают одинаково и не накладываются друг на друга, поэтому использовать их можно одновременно. Важно обратить внимание, что не все приложения поддерживают эту функцию. Например, включить камеру и электронную книгу в этом режиме не получиться.
Как включить разделение экрана на Андроиде
При желании активировать функцию многозадачности на Андроид 7.0 важно учитывать, что она скрыта. Однако для ее разблокировки не требуются root-права.
Для этого необходимо сделать следующие действия:
- Открыть меню и зайти в настройки. В списке кликнуть по пункту «О телефоне».
- По номеру сборки операционной системы нужно кликать по тех пор, пока не появится уведомление о том, что режим сборщика включен.
- В списке выбрать Параметры разработчика.
- Кликнуть по пункту Изменение размера в многоэкранном режиме, чтобы его активировать.
- Перезагрузить смартфон.
- После включения телефона открыть сразу два софта.
- В активированном режиме многоэкранность вам требуется кликнуть по необходимому значку, оттянуть вкладку в сторону и отпустить. Таким образом, будут одновременно работать две программы. При этом пользователь может изменять размеры вкладок путем их смещения.
Таким же способом включается функция многозадачности в других новых версиях Андроид, а также Android 9. Разница может быть только в том, что режим не скрыт и не требует разблокировки.
Как разделить экран смартфона на две части
Разделить дисплей смартфона не две части можно несколькими несложными способами, которые рассмотрим далее.
Способ 1: с помощью тапов
Это самый популярный и несложный вариант разделения экрана, который используется на ОС не старее Android N. Открываем несколько программ или несколько окон в браузере.
Нажимаем кнопку многоэкранности, которая должна находиться в центре на экранной панели или слева. После чего на дисплее появится список всех приложений. Кликаем один раз по выбранному окну и делаем движение по дисплею вверх-вниз.
После этих действий экран должен разделиться. Аналогично делаем и с другой утилитой. Немного ее переносим и делаем двойной тап. Затем появляется два экрана с разделительной линией, которой можно регулировать.
Способ 2: с помощью панели быстрых настроек
Этот вариант подойдет не для всех смартфонов, однако он намного проще предыдущего.
Пошаговые действия:
- Необходимо открыть верхнюю панель и кликнуть по настройке в виде изображения шестеренки. Удержать нажатие кнопки на несколько секунд. После этого должна активироваться функция System UI Tuner, о чем придет оповещение.
- Зайти в меню этого режима и включить его. После этого пользователь сможет активировать функцию многозадачности по свайпу вверх.
Способ 3: с помощью программы Floating Apps Free
Если вышеперечисленные способы не помогли, то рекомендуется использовать утилиту floating apps free. Она позволит сделать настоящую мультиоконность. Это означает, что пользователю предоставляется возможность создать более двух экранов на смартфоне или планшете. Скачать софт можно бесплатно в Гугл Плей.
Возможности Floating Apps Free:
- Работа с калькулятором и использование заметок.
- Просмотр вложений электронной почты, не выходя из программы.
- Возможность просматривать PDF-файлы одновременно.
- Плавающий браузер для отложенного просмотра ссылок.
- Быстрый перевод текста через специальный словарь.
Floating apps free имеет русский интерфейс, благодаря этому пользователь легко освоит утилиту. Стоит учитывать, что ПО поддерживает режим деления дисплея на 2 окна не во всех приложениях.
Как разделить экран планшета на 2 части
Многие наверняка думают, что режим многозадачности на планшетах создается по-другому. Однако здесь все аналогично, поэтому необходимо скачать соответствующее приложение и следовать инструкции:
- После скачивания софта запустить его, затем кликнуть по кнопке многозадачности, удерживая ее.
- На экране появится список, в котором необходимо выбрать нужное ПО и перенести его на свободное место на экране смартфона.
- Регулировать открывшиеся окна можно при помощи специальной разделительной линией.
Видеоинструкция
Выводы
Скачивая утилиту для разделения экрана, важно учитывать, что не все программы поддерживают эту функцию. Как правило, в этом режиме открывается браузер, Ютуб, настройки, некоторые мессенджеры. Теперь вы знаете, как активировать режим многозадачности на Андроид и понимаете, что это несложно.
Источник