Що таке наміри в Android?


347
  • Що таке наміри в Android?
  • Хтось може детальніше розібратися з прикладом?
  • Які існують типи інтенсив і чому ми їх використовуємо?
  • Чому в Android такі важливі значення?

Як і Windows, що працює на основі повідомлень Операційна система і сповіщає користувачів про введення програми, надсилаючи їм повідомлення, android, використовуючи наміри зробити це!
AminM

Відповіді:


486

Намір є «намір» виконати дію; іншими словами,

об’єкт обміну повідомленнями, за допомогою якого можна подати запит на дію від іншого компонента програми

В основному наміри - це повідомлення сказати, що ви зробили або хочете, щоб щось сталося. Залежно від наміру програми або ОС можуть прослуховувати його і відповідатимуть відповідно. Подумайте про це як про вибуховий електронний лист до групи друзів, в якому ви говорите своєму другові Джону щось зробити, або друзям, які можуть робити X ( "фільтри намірів" ), робити X. Інші люди ігнорують електронну пошту, але Джон (або друзі, які вміють робити X) на це відреагують.

Для прослуховування наміру трансляції (наприклад, дзвонить телефон або надходить SMS), ви реалізуєте приймач широкомовної передачі , якому буде передано намір. Щоб заявити, що ви можете обробляти інший додаток, наприклад "сфотографувати", ви оголошуєте фільтр намірів у файлі маніфесту додатка .

Якщо ви хочете відмовитись від наміру зробити щось, наприклад, спливати дозвон, ви запускаєте наміри, які говорять, що ви хочете.


1
@Chirag Raval У чому різниця між наміром і слухачем дій?
майоран

1
Може, поясніть ще раз останнє речення? Якщо ви хочете звільнити ..
Шафізаде,

1
Подібно до делегатів C #?
Пол,

Насправді дія означає, що ви можете запустити один компонент з іншого компонента за допомогою наміру. Саме для цього в першу чергу використовується.
Sreekanth Karumanaghat

Також додати до цього ... Намір є асинхронним.
Sreekanth Karumanaghat

165

Що таке наміри?

В основному наміри - це повідомлення, яке передається між компонентами (такими як Діяльність , Служби, Транслятори та Контент-провайдери ). Отже, це майже еквівалентно параметрам, переданим на виклики API. Принципові відмінності між викликами API та викликом компонентів через наміри:

  • Дзвінки API синхронізовані, а виклики на основі намірів - асинхронні.
  • API-дзвінки прив'язують час компіляції, тоді як виклики на основі намірів є обов'язковими до виконання.

Звичайно, Intents можна змусити працювати так само, як дзвінки API, використовуючи, що називаються, явні наміри, які будуть пояснені пізніше. Але частіше за все неявні наміри - це шлях, і саме це пояснюється тут.

Один компонент, який хоче викликати інший, повинен лише висловити свій намір виконати роботу. І будь-який інший компонент, який існує і стверджував, що він може виконувати таку роботу через фільтри намірів , викликається платформою Android для виконання цього завдання. Це означає, що жоден з компонентів не знає про існування один одного, але все ще може працювати разом, щоб дати кінцевому користувачеві бажаний результат.

Цей невидимий зв'язок між компонентами досягається за рахунок поєднання намірів, фільтрів намірів та платформи Android.

Це призводить до величезних можливостей, таких як:

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

Ось додаткові технічні відомості про Інтенти з документації на Android .

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

Намір надає можливість виконувати запізніле прив'язка часу виконання коду в різних програмах. Найбільш вагоме його використання - у запуску заходів, де це можна вважати клеєм між видами діяльності. Це в основному пасивна структура даних, що містить абстрактний опис дії, яку слід виконати. Основними відомостями у намірі є:

  • дія Загальна дія, яка повинна бути виконана, наприклад ACTION_VIEW, ACTION_EDIT, ACTION_MAIN тощо.
  • дані Дані, з якими можна працювати, наприклад запис особи в базі даних контактів, виражений урі.

Вивчайте більше


4
Я ціную використання в цьому поясненні понять інформатики. Це робить дискусію більш конкретною і особливо корисною для читачів із солідним ступенем інформатики.
Donal Lafferty

49

Цілі - це спосіб розповісти Android, що ви хочете зробити . Іншими словами, ви описуєте свій намір. Цілі можна використовувати для сигналізації системі Android про те, що сталася певна подія. Інші компоненти в Android можуть зареєструватися до цієї події через фільтр намірів.

Далі наведено 2 типи намірів

1. Явні наміри

використовується для виклику конкретного компонента. Коли ви знаєте, який компонент ви хочете запустити, і ви не хочете надавати користувачеві вільний контроль над тим, який компонент використовувати. Наприклад, у вас є програма, яка має 2 дії. Діяльність A та активність B. Ви хочете запустити активність B із діяльності A. У цьому випадку ви визначаєте явний намір, орієнтований на діяльністьB, а потім використовуєте його для прямого виклику.

2.Імпліцитні наміри

використовується, коли у вас є уявлення про те, що ви хочете зробити, але ви не знаєте, який компонент слід запустити. Або якщо ви хочете дати користувачеві можливість вибирати між списком компонентів, які слід використовувати. Якщо ці Інтенти надсилаються до системи Android, вона шукає всі компоненти, які зареєстровані для конкретної дії та типу даних. Якщо знайдено лише один компонент, Android запускає компонент безпосередньо. Наприклад, у вас є програма, яка використовує камеру для фотографування. Однією з особливостей вашої програми є те, що ви даєте користувачеві можливість надсилати зроблені ним фотографії. Ви не знаєте, який саме додаток має користувач, який може надсилати фотографії, а ви також хочете дати користувачеві можливість вибрати, який зовнішній додаток використовувати, якщо він має більше ніж один. У цьому випадку ви б не використовували явного наміру.

Явний намір завжди поставляється до своєї мети, незалежно від того, що вона містить; фільтр не проводиться. Але неявний намір постачається компоненту лише в тому випадку, якщо він може пройти через один з фільтрів компонента

Фільтри намір

Якщо інтенсив буде надіслано до системи Android, він визначить відповідні програми для цієї програми. Якщо для цього типу інтентів було зареєстровано кілька компонентів, Android пропонує користувачеві вибір відкрити один з них.

Це визначення засноване на IntentFilters. IntentFilters визначає типи намірів, на які може реагувати приймач активності, послуги або прийом трансляцій. Фільтр намірів оголошує можливості компонента. Він визначає, що може робити анатичність чи послуга та які типи трансляцій приймач може обробляти. Це дозволяє відповідному компоненту отримувати Інтенти заявленого типу. IntentFilters зазвичай визначається через файл AndroidManifest.xml. Для BroadcastReceiver також можна визначити їх у кодуванні. IntentFilters визначається його категорією, дією та фільтрами даних. Він також може містити додаткові метадані.

Якщо компонент не визначає фільтр намірів, його можна викликати лише явними намірами.

Далі наведено два способи визначення фільтра

1.Manifest файл

Якщо ви визначаєте фільтр намірів у маніфесті, вашій програмі не потрібно запускатись, щоб реагувати на наміри, визначені в її фільтрі. Android реєструє фільтр після встановлення вашої програми.

2.BroadCast приймач

Якщо ви хочете, щоб ваш приймач радіомовлення отримав наміри лише тоді, коли ваша програма працює. Тоді слід визначити свій фільтр намірів під час виконання програми (програмно). Майте на увазі, що це працює лише для радіоприймачів.


12

Після написання однієї діяльності виникає необхідність переходу до іншої діяльності для виконання іншого завдання з або без інформації з першого заняття.

Платформа Android дозволяє здійснювати перехід за допомогою Intent Interface.

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


Цілі - це більше, ніж перехід між видами діяльності. Було б корисніше дати огляд.
Ваддаді Картік

@KartickVaddadi Погоджуйтеся з вашою точкою. Це була моя відповідь за одне використання намірів!
Paresh Mayani

Paresh, посилання blog.vimviv.com/android/intent-android більше не працює :(
користувач2060383

9

Намір Android

Намір Android дозволяє переходити від однієї активності до Android на іншу. З прикладами цей підручник також розповідає про різні типи намірів Android.

Намір Android можна визначити як прості об’єкти повідомлень, які використовуються для спілкування від 1 діяльності до іншої.

Цілі визначають намір програми. Вони також використовуються для передачі даних між видами діяльності.

Намір Android можна використовувати для виконання наступних 3 завдань:

  1. Відкрийте іншу активність або послугу з поточної активності
  2. Передайте дані між видами діяльності та службами
  3. Делегуйте відповідальність на іншу програму. Наприклад, ви можете використовувати Intents для відкриття програми браузера для відображення URL-адреси.

Намір можна широко класифікувати на 2 категорії. Для цієї категорії немає ключових слів, а лише широка класифікація способів використання андроїдських намірів.

Явний намір 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


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 для запуску Діяльності, 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

що таке наміри?

Це свого роду повідомлення або інформація, яка передається компонентам. Він використовується для запуску діяльності, показу веб-сторінки, надсилання sms, надсилання електронної пошти тощо.

У Android існує два типи намірів:

Неявний намір
Явний намір

Неявний намір використовується для виклику системних компонентів

Приклад

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

startActivity(i);

Явний намір використовується для виклику класу діяльності.

Приклад

Намір наміру = newIntent (це, SecondActivity.class);

startActivity(intent);

ви можете прочитати більше

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


2

Намір - це клас, який пов'язує інформацію для виконання деяких дій.

Приклад: передача даних однієї дії іншому, коли користувач виконує такі дії в

нинішня діяльність.


1

У широкому розумінні ми можемо визначити Намір як

Коли одна активність хоче розпочати іншу діяльність, вона створює Об'єкт під назвою "Намір", який вказує, яку діяльність він хоче запустити.


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 :

Намір - це контейнер даних, який використовується для міжпроцесорного зв'язку. Він побудований поверх Binderточки зору архітектури Android.


0

Цілі використовуються для ініціювання іншої діяльності з однієї діяльності. В основному вона використовується для декількох цілей, таких як передача даних в іншу діяльність з однієї діяльності та для ініціювання цілей.

Вони в основному бувають двох типів

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

  2. Явні наміри.

Як початківець я це знаю дуже багато, думаю, це дасть базове уявлення про наміри андроїда


2
Прочитайте, будь ласка, це посилання про відповіді на запитання.
Бонатті
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.