Подтвердить что ты не робот

Разница между задачей и процессом в Android

Я немного смущен различием между задачей и процессом в Android.

Если я правильно понимаю, задача - всего лишь стопка действий. Из того, что я читал до сих пор, я думаю, что задача может выглядеть так:

| Activity A running in Process P1 |
| Activity B running in Process P2 |
| Activity C running in Process P3 |

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

Другой вопрос: Каков реальный смысл "контекста приложения"? Процесс или задача?

И окончательный вопрос. Класс приложения (который в основном одноэлементный) представляет собой процесс или задачу?

4b9b3361

Ответ 1

Все, что я когда-либо узнал об этом, я узнал на этой странице .

Изменить. Я также просто наткнулся на Руководство по разработке действий и задач. В нем будет рассмотрена точная тема, которую вы - спросил он. Я многому научился:)

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

Основываясь на моем понимании, вы правы. Я понимаю, что Процессы являются единицами фактического исполнения, а Задачи - об ассоциации, чтобы добиться результата. В качестве примера на вышеупомянутой странице, если вы создаете намерение, которое открывает веб-страницу, созданная им деятельность создается в процессе веб-браузеров, но связана с вашими задачами приложений. Таким образом, задача становится виртуальным стеком операций, запущенных на разных процессах, в зависимости от приложения, которое предоставило Activity.


Другой вопрос: что такое реальный значение "контекст приложения"? процесса или задачи?

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

Обычно новый экземпляр активность запускается в процесс приложения, которое определило его, поэтому все экземпляры действия, выполняемые в тот же процесс


И последний вопрос: приложение класс (который в основном одноэлементный) представляет процесс или задачу?

С той же интерпретацией, что и выше, моя догадка о том, почему объект приложения представляет Singleton, состоит в том, что все ваши действия приложений запускаются в одном процессе и этот процесс привязан к Приложению. Я не знаю, что это точка проектирования, но, по-видимому, она является последствием текущего дизайна.

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

Элемент манифеста имеет атрибут android: процесс с описанием следующим образом:

Название процесс, в котором деятельность должна запустить. Обычно все компоненты приложение запускается в процессе по умолчанию созданный для приложения. В нем есть то же имя, что и приложение пакет. Элементы атрибут процесса может установить другой по умолчанию для всех компонентов. Но каждый компонент может переопределить значение по умолчанию, позволяя вам распространять ваши приложения на нескольких процессах. Если имя, присвоенное этому атрибуту начинается с двоеточия (':'), нового процесс, частный для приложения, создается, когда это необходимо, и активность проходит в этом процессе. Если имя процесса начинается с нижнего регистра символа, действие будет выполняться в глобальный процесс с таким названием что у него есть разрешение на это. Эта позволяет использовать компоненты в разных приложения для совместного использования процесса, сокращение использования ресурсов.

Ответ 2

Важное примечание от Android Developer:

Общим недоразумением в отношении многозадачности Android является различие между процессом и приложением. В Android это не сильно связанные объекты: приложения могут казаться пользователю без фактический процесс, выполняемый в настоящее время приложением; несколько приложений могут совместно использовать процессы, или одно приложение может использовать несколько процессов в зависимости от его потребностей; процесс приложения может быть сохранен вокруг Android, даже когда это приложение не активно делает что-то.

Ответ 3

Процесс: Когда запускается компонент приложения, и в приложении нет других запущенных компонентов, система Android запускает новый процесс Linux для приложения с одним потоком выполнения. По умолчанию все компоненты одного и того же приложения запускаются в одном процессе и потоке (называемом "основным" потоком). Каждое приложение запускается в своем собственном процессе и все компоненты приложения запускаются в этом процессе по умолчанию.

для подробного процесса: http://developer.android.com/guide/components/processes-and-threads.html

Задачи: Задача - это набор действий, с которыми пользователи взаимодействуют при выполнении определенной работы. Действия расположены в стеке ( "задний стек" ) в порядке, в котором каждая активность открывается. Активность может даже запускать действия, которые существуют в других приложениях на устройстве. Например, если ваше приложение хочет отправить электронное письмо, вы можете определить намерение выполнить действие "отправить" и включить некоторые данные, такие как адрес электронной почты и сообщение. Затем открывается действие из другого приложения, которое объявляет себя для обработки такого намерения. В этом случае цель состоит в том, чтобы отправить электронное письмо, так что начинает действовать "приложение для электронной почты" (если несколько действий поддерживают одно и то же намерение, тогда система позволяет пользователю выбрать, какой из них использовать). Когда отправляется электронное письмо, ваша деятельность возобновляется, и кажется, что активность электронной почты была частью вашего приложения. Несмотря на то, что действия могут быть выполнены из разных приложений, Android поддерживает этот беспрепятственный пользовательский интерфейс, сохраняя оба действия в одной и той же задаче.

для подробной задачи - http://developer.android.com/guide/components/tasks-and-back-stack.html