Что такое Намерение в Android?

347
  • Что такое Намерение в Android?
  • Может кто-нибудь уточнить на примере?
  • Какие типы Intents и почему мы их используем?
  • Почему Интенты так важны в Android?
Никунь Патель
источник
Подобно Windows, которая является операционной системой на основе сообщений и уведомляет пользователя о вводе в программу, отправляя им сообщение, android использует намерение сделать это!
AminM

Ответы:

486

Намерение является «намерение» выполнить действие; другими словами,

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

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

Для прослушивания намерения вещания (например, звонка телефона или получения SMS) вы реализуете приемник вещания , которому передается намерение. Чтобы объявить, что вы можете обрабатывать намерения другого приложения, такие как «сделать снимок», вы объявляете фильтр намерений в файле манифеста вашего приложения .

Если вы хотите запустить намерение что-то сделать, например, всплыть номеронабиратель, вы включите намерение сказать, что вы будете.

Чираг
источник
1
@Chirag Raval В чем разница между намерением и слушателем действия?
Mayooran
1
Пожалуйста, объясните еще раз последнее предложение? Если вы хотите выстрелить ..
Shafizadeh
1
Как делегаты C #?
Пол
На самом деле действие означает, что вы можете запустить один компонент из другого, используя Intent. Вот для чего он в основном используется.
Sreekanth Karumanaghat
Также добавить к этому ... Намерение является асинхронным.
Sreekanth Karumanaghat
165

Что такое Намерение?

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

  • Вызовы API являются синхронными, в то время как вызовы на основе намерений являются асинхронными.
  • Вызовы API привязываются во время компиляции, в то время как вызовы на основе намерений связываются во время выполнения.

Конечно, Intents можно заставить работать точно так же, как вызовы API, используя так называемые явные намерения, которые будут объяснены позже. Но чаще всего подразумеваются неявные намерения , и это то, что объясняется здесь.

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

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

Это приводит к огромным возможностям, таким как:

  • Смешивать и сочетать или, скорее, подключи и играй компонентов во время выполнения.
  • Замена встроенных приложений Android на разработанные пользователем приложения.
  • Повторное использование на уровне компонентов внутри и между приложениями.
  • Сервисная ориентация на самый гранулированный уровень, если можно так выразиться.

Вот дополнительные технические подробности об Intents из документации Android .

Намерение - это абстрактное описание выполняемой операции. Его можно использовать с startActivity для запуска Activity, для передачи BroadIntent его любым заинтересованным компонентам BroadcastReceiver и startService (Intent) или bindService (Intent, ServiceConnection, int) для взаимодействия с фоновой службой.

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

  • действие Общее действие, которое нужно выполнить, например ACTION_VIEW, ACTION_EDIT, ACTION_MAIN и т. д.
  • данные Данные, с которыми нужно работать, например, запись о человеке в базе данных контактов, выраженная в виде Uri.

Выучить больше

mr.boyfox
источник
4
Я ценю использование понятий информатики в этом объяснении. Это делает обсуждение более конкретным и особенно полезным для читателей, имеющих солидную степень в области компьютерных наук.
Донал Лафферти
49

Intents - это способ рассказать Android, что вы хотите сделать . Другими словами, вы описываете свое намерение. Интенты могут использоваться для оповещения системы Android о том, что произошло определенное событие. Другие компоненты в Android могут зарегистрироваться на это событие через фильтр намерений.

Ниже приведены 2 типа намерений

1. Явные намерения

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

2. Неявные намерения

используется, когда у вас есть представление о том, что вы хотите сделать, но вы не знаете, какой компонент следует запустить. Или, если вы хотите дать пользователю возможность выбирать между списком компонентов для использования. Если эти Интенты отправляются в систему Android, то выполняется поиск всех компонентов, которые зарегистрированы для конкретного действия и типа данных. Если найден только один компонент, Android запускает компонент напрямую. Например, у вас есть приложение, которое использует камеру для фотографирования. Одной из особенностей вашего приложения является то, что вы предоставляете пользователю возможность отправлять сделанные им фотографии. Вы не знаете, какое приложение имеет пользователь, который может отправлять фотографии, и вы также хотите дать пользователю возможность выбрать, какое внешнее приложение использовать, если у него более одного. В этом случае вы не будете использовать явное намерение.

Явное намерение всегда доставляется к цели, независимо от того, что оно содержит; с фильтром не справляются. Но неявное намерение доставляется компоненту, только если оно может пройти через один из фильтров компонента

Намеренные фильтры

Если содержание отправляется в систему Android, оно определит подходящие приложения для этого намерения. Если для этого типа Intents было зарегистрировано несколько компонентов, Android предлагает пользователю выбрать один из них.

Это определение основано на IntentFilters. IntentFilters указывает типы Intent, на которые может реагировать действие, служба или Broadcast Receiver. Фильтр намерений объявляет возможности компонента. В нем указывается, что может делать служба или служба и какие типы широковещательных сообщений может обрабатывать приемник. Это позволяет соответствующему компоненту получать содержимое объявленного типа. IntentFilters обычно определяются через файл AndroidManifest.xml. Для BroadcastReceiver также возможно определить их в кодировании. IntentFilters определяется его категорией, действием и фильтрами данных. Он также может содержать дополнительные метаданные.

Если компонент не определяет фильтр Intent, он может быть вызван только явным Intents.

Ниже приведены 2 способа определения фильтра.

Файл 1.Manifest

Если вы определяете фильтр намерений в манифесте, ваше приложение не должно запускаться, чтобы реагировать на намерения, определенные в его фильтре. Android регистрирует фильтр при установке приложения.

2. широковещательный приемник

Если вы хотите, чтобы ваш широковещательный получатель получал намерение только тогда, когда ваше приложение работает. Затем вы должны определить свой фильтр намерений во время выполнения (программно). Имейте в виду, что это работает только для приемников вещания.

Варун Бхатия
источник
12

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

Платформа Android позволяет переход с помощью Intent Interface.

Слова взяты отсюда: с помощью Intent Demo, и я предлагаю вам пройти этот пример, потому что они также предоставили файл кода. так что вы можете использовать его и легко понять то же самое.

Пареш Майани
источник
Намерения предназначены не только для перехода между действиями. Было бы более полезно дать обзор.
Ваддади Картик
@KartickVaddadi Согласитесь с вашей точкой зрения. Это был мой ответ за одно использование Intent!
Пареш Майани
Пареш, ссылка blog.vimviv.com/android/intent-android больше не работает :(
user2060383
9

Намерение Android

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

Android Intent может быть определен как простой объект сообщения, который используется для связи от одного действия к другому.

Намерения определяют намерение Приложения. Они также используются для передачи данных между действиями.

Намерение Android можно использовать для выполнения следующих 3 задач:

  1. Открыть другое действие или службу из текущего действия
  2. Передача данных между деятельностью и услугами
  3. Передать ответственность другому приложению. Например, вы можете использовать Intents, чтобы открыть приложение браузера для отображения URL.

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

Явное намерение Android

Явное намерение Android - это намерение, в котором вы явно определяете компонент, который должен вызываться системой Android.

 Intent MoveToNext = new Intent (getApplicationContext(), SecondActivity.class);

Неявное намерение Android

Неявное Android Intents - это намерение, при котором вместо определения точных компонентов вы определяете действие, которое хотите выполнить. Решение обработать это действие остается за операционной системой. ОС решает, какой компонент лучше всего использовать для неявных намерений. Давайте посмотрим на пример:

    Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);

Для получения дополнительной информации вы можете посетить ниже

http://developer.android.com/reference/android/content/Intent.html

IntelliJ Amiya
источник
9

Согласно их документации:

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

Вот ссылка с примером: http://developer.android.com/training/basics/firstapp/starting-activity.html#BuildIntent

Как описано в документе, для начала действия (вам также необходимо понять, что такое действие) используйте намерение, как показано ниже

/** Called when the user clicks the Send button */
public void sendMessage(View view) {
    Intent intent = new Intent(this, DisplayMessageActivity.class);
    EditText editText = (EditText) findViewById(R.id.edit_message);
    String message = editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    startActivity(intent);
}
КТА
источник
8

Намерение - это абстрактное описание выполняемой операции. Его можно использовать с startActivity для запуска Activity, для передачи BroadIntent его любым заинтересованным компонентам BroadcastReceiver и startService (Intent) или bindService (Intent, ServiceConnection, int) для взаимодействия с фоновой службой.

Для более подробной информации смотрите эти ссылки:

1). http://developer.android.com/reference/android/content/Intent.html

2) http://developer.android.com/guide/topics/intents/intents-filters.html

3). http://www.vogella.de/articles/AndroidIntent/article.html

Есть еще много статей доступны.

Динеш Шарма
источник
5

что такое Intent?

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

Есть два типа намерений в Android:

Неявное намерение
явное намерение

Неявное намерение используется для вызова системных компонентов

пример

Intent i = newIntent(android.content.Intent.ACTION_VIEW,Uri.parse(“http://www.amazon.com”));

startActivity(i);

Явное намерение используется для вызова класса активности.

пример

Intent intent = newIntent (this, SecondActivity.class);

startActivity(intent);

Вы можете прочитать больше

http://www.vogella.com/tutorials/AndroidIntent/article.html#intents_overview http://developer.android.com/reference/android/content/Intent.html

Мина Фаузи
источник
2

Намерение - это класс, который связывает информацию для выполнения некоторых действий.

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

настоящая деятельность.

madarkife
источник
1

В широком смысле, мы можем определить намерение как

Когда одно действие хочет запустить другое действие, оно создает объект с именем Intent, который указывает, какое действие он хочет запустить.

Картик Гоял
источник
0

Приложение Android может содержать ноль или более действий. Если в вашем приложении более одного действия, вам часто приходится переходить от одного к другому. В Android вы перемещаетесь между действиями через то, что известно как намерение. Вы можете передать некоторые данные в действие, которое хотите начать через намерение, используя putExtra ().

Шаон Хасан
источник
0

Из бумажной Deep Dive into Android IPC/Binder Framework atAndroid Builders Summit 2013 ссылки

Намерение понимается в некоторых небольших, но эффективных линиях

  1. Android поддерживает простую форму IPC (межпроцессное взаимодействие) через намерения
  2. Обмен сообщениями о намерениях является основой для асинхронной связи между компонентами Android (активность, сервис, поставщики контента, широковещательный приемник)
  3. Эти компоненты могут работать в одном или разных приложениях (например, в процессах).
  4. Включает как двухточечную, так и публиковать подписку доменов обмена сообщениями
  5. Само намерение представляет собой сообщение, содержащее описание выполняемой операции, а также данные, которые должны быть переданы получателю (получателям).

Из этой ветки простой ответ архитектора андроида Дайан Хэкборн утверждает, data containerчто это действительно так.

С точки зрения архитектуры Android :

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

Захан Сафалва
источник
0

Интенты используются для инициирования другого действия из одного действия. Оно в основном используется для нескольких целей, таких как отправка данных в другое действие из одного действия, и для целей запуска.

Они в основном двух типов

  1. Неявные намерения.

  2. Явные намерения.

Как начинающий, я знаю это очень много, я думаю, что это даст некоторое общее представление о намерениях Android

Соорья Пракаш
источник
2
Пожалуйста, прочитайте эту ссылку о том, как ответить на вопросы.
Бонатти