Ищите облегчение объяснения концепции ожидающих намерений

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

Прежде чем вы, дорогой читатель, перейдете к ссылке разработчика Android, чтобы вставить мне текст, помните, что я уже прочитал документацию Intent / Pending Intent и еще не решил проблему.

Мне кажется, что модель Intent является ядром системы андроидов и, как таковая, носит весьма общий характер. Именно из-за этого примеры, которые я видел в его использовании, как правило, многочисленны и разнообразны. Это изменение смущает концепции, которые я пытаюсь изучить, и это расстраивает.

Мои вопросы просто написаны, но, возможно, сложно объяснить простым языком. Я понимаю, что намерение – это сообщение другим действиям и что другие действия могут заявить о своей заинтересованности в их манифесте. В ожидании намерения, обертка для намерения, меня смущает.

  1. Я вижу документацию, относящуюся к разрешениям и токенам. Я получаю это, но почему ожидающее намерения необходимо как отдельный объект – какое поведение оно позволяет?
  2. Какое поведение жизненного цикла действия / задачи вызывает ожидающие действия?
  3. Когда требуется широковещательный приемник?
  4. Каковы ограничения широковещательного приемника?

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

Любая обратная связь приветствуется. Благодарю.

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

  • Видимость. Другие приложения не могут вызывать такие компоненты, как «Службы» или «Действия», которые не снабжены общедоступным (или любым) фильтром намерений. Они могут быть вызваны только вашим приложением, используя явные намерения, определяющие их пакет и имя класса.
  • Права доступа. Каждое приложение может запрашивать определенное количество разрешений. Это в основном предопределенные разрешения, но у вас также есть возможность определять свои собственные разрешения, хотя я никогда не использовал это. Ваше приложение не может делать ничего, что превышает эти разрешения.

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

[Edit] Они используются, например, с диспетчером аварийных сигналов. Он сообщает диспетчеру тревоги, что и когда делать, предоставляя ему (ожидающее) намерение. Поскольку ваше приложение, вероятно, больше не будет там, когда придет время, диспетчер аварийных сигналов должен будет отправить его вам. Это означает, что эти намерения могут выполнять только то, что разрешено диспетчером аварийных сообщений, а не то, что разрешено вашим приложением. Если диспетчеру аварийного сигнала было позволено просто что-либо сделать, каждое приложение могло бы сделать что угодно, используя диспетчер аварийных сигналов в качестве прокси-сервера. Поэтому вы должны использовать ожидающие намерения, чтобы специально предоставить диспетчеру тревоги права, необходимые для вашего конкретного намерения. [/ Edit]

Кроме того, нет никакой разницы в регулярных намерениях, по крайней мере, в том, что касается использования. Это становится немного сложнее с липкими намерениями и т. Д., Но это общий смысл, по крайней мере, насколько я знаю.

Радиовещательный приемник необходим, если вы хотите реагировать на определенные системные события или события других приложений. Широковещательный приемник невидим, он не создает никакой формы представления и не связан с каким-либо взаимодействием пользователя. Преимущество заключается в том, что это может произойти независимо от того, выполняется ли ваше приложение (или, точнее, ваши действия) или нет.

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