Концепция намерения в Android? - PullRequest
7 голосов
/ 07 апреля 2010

Я не очень понимаю использование и концепцию Намерения. Я действительно понимаю, что действие - это один визуальный интерфейс и одно усилие, в котором может участвовать пользователь. Я ДУМАЮ, что намерение используется для запуска и связи между различными действиями. Если так, то как бы вы достигли этого? Пример кода будет полезен. В аналогии постарайтесь сравнить намерение с чем-то в повседневной жизни. Это очень помогло бы!

Ответы [ 8 ]

6 голосов
/ 07 апреля 2010

Чтобы процитировать API-документы , Intent - это в основном пассивная структура данных , содержащая абстрактное описание действия, которое должно быть выполнено , с двумя основными частями информации, действиями и данными.

На самом базовом уровне Intent можно рассматривать как действие, которое вы можете указать Android вызывать - и то, что происходит, зависит от того, что зарегистрировано для этого действия.

Часть действия Intent представляет собой строку или строковую константу, а часть данных представляет собой строку, представляющую URI. В дополнение к этим основным атрибутам вы можете добавить новые атрибуты через дополнительный, который представляет собой просто карту пар ключ-значение.

Для получения дополнительной информации см. Фильтры Intent и Intent , Intent class или Игра с Intents .

Я также рекомендую книгу Pro Android , в которой подробно рассматриваются эти детали API. Существует более новая версия Pro Android 2 (еще не читала).

Если вы ищете в Google Книгах его , вы можете увидеть выдержки из книги, для получения дополнительной информации обратитесь к Главе 3, «Использование ресурсов, поставщиков контента и содержимого».

5 голосов
/ 07 апреля 2010

Intent может использоваться для запуска действий, предоставляя действие и некоторые данные.Пример использования действия Intent для просмотра веб-страницы:

Intent myIntent = new Intent(Intent.VIEW_ACTION,
                  Uri.parse("http://www.google.com"));

Где действие Intent.VIEW_ACTION, а строка данных - Uri веб-сайта Google.

Общие задачи и как их выполнять в Android

Я пытался, но сложно сравнить Intent с чем-то в повседневной жизни.Если я что-нибудь придумаю, я набросаю это своим ответом.

3 голосов
/ 28 июня 2010

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

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

1 голос
/ 15 сентября 2016

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

1 голос
/ 07 апреля 2010

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

1 голос
/ 07 апреля 2010

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

Содержимое обычно состоит из двух частей: типа информации и компонента данных, который обычно представляет собой URI (например, веб-сайт, данные GPS или контакт для набора).

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

Android API подробно описывает, как создавать свои собственные IntentFilters и Receivers. Смотрите там для получения дополнительной информации.

0 голосов
/ 22 декабря 2010

Основы приложений в Руководстве по разработке определяют намерения как "асинхронные сообщения".

Возможно, чтобы лучше понять их отличие от "сообщений", их можно сравнить с сообщениями WM_COMMAND в мире Microsoft Windows, поскольку по определению они должны запускать действие (а не передавать только информацию).

0 голосов
/ 07 апреля 2010

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

http://developer.android.com/guide/topics/fundamentals.html

Это основа намерений. Вам нужно использовать .startActivityForResult () вместо startActivity (), если вы хотите получить возвращаемое значение, и иметь метод void onActivityResult (Intent intent), который будет действовать в качестве прослушивателя при возвращении значения.

Конструктор состоит из 2 частей. Первый - это int, который будет константой в классе Intent, чтобы сообщить системе, что вы хотите делать с данными. Второй будет URI для передачи данных между действиями. Затем система использует их, чтобы решить, к какому приложению оно должно быть передано, когда вы помещаете его в запрос активности. Что касается вашей аналогии, я не знаю, это довольно сложно, на самом деле ничего подобного нет. Я думаю, что самое близкое, что вы получите, - это дать что-то своему боссу и сказать ему, что вам нужен кто-то еще, чтобы сделать что-то с этим, что вы не можете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...