Co to jest zamiar w Androidzie?

347
  • Co to jest zamiar w Androidzie?
  • Czy ktoś może opracować przykład?
  • Jakie są rodzaje intencji i dlaczego ich używamy?
  • Dlaczego intencje są tak ważne w systemie Android?
Nikunj Patel
źródło
Podobnie jak Windows, który jest systemem operacyjnym opartym na komunikatach i powiadamia użytkownika o wprowadzeniu programu do programu, wysyłając do niego wiadomość, android używa tego!
AminM

Odpowiedzi:

486

Intent jest „zamiar”, aby wykonać działanie; innymi słowy,

obiekt wiadomości, którego można użyć do żądania działania z innego komponentu aplikacji

Zamiar to w gruncie rzeczy komunikat, że zrobiłeś lub chcesz, aby coś się wydarzyło. W zależności od intencji aplikacje lub system operacyjny mogą nasłuchiwać i odpowiednio zareagują. Pomyśl o tym jak o świetnym e-mailu do grona znajomych, w którym mówisz swojemu przyjacielowi Johnowi, aby coś zrobił, lub znajomym, którzy mogą zrobić X ( „filtry intencyjne” ), aby zrobić X. Inni ludzie zignorują ten e-mail, ale John (lub przyjaciele, którzy potrafią wykonać X) zareagują na to.

Aby nasłuchiwać zamiaru transmisji (np. Dzwonka telefonu lub odebrania wiadomości SMS), zaimplementuj odbiornik transmisji , który przejdzie cel. Aby zadeklarować, że możesz obsłużyć zamiary aplikacji innej osoby, takie jak „zrób zdjęcie”, zadeklaruj filtr zamiarów w pliku manifestu aplikacji .

Jeśli chcesz odpalić zamiar zrobienia czegoś, np. Podnieść dialer, odpalasz zamiar, że tak zrobisz.

Chirag
źródło
1
@Chirag Raval Jaka jest różnica między intencją a słuchaczem akcji?
mayooran
1
Czy może proszę ponownie wyjaśnić ostatnie zdanie? Jeśli chcesz wystrzelić ...
Shafizadeh
1
Podobne do delegatów C #?
Paul
W rzeczywistości akcja oznacza, że ​​możesz uruchomić jeden komponent z innego komponentu za pomocą zamiaru. Do tego jest przede wszystkim używany.
Sreekanth Karumanaghat,
Dodajmy do tego ... Intencja jest asynchroniczna.
Sreekanth Karumanaghat,
165

Co to jest zamiar?

Intent to w zasadzie, że wiadomość jest przekazywana między składnikami (takimi jak Działalności , Usług, broadcast odbiorników i Dostawców Treści ). Jest więc prawie równoważny parametrom przekazywanym do wywołań API. Podstawowe różnice między wywołaniami interfejsu API a wywoływaniem komponentów za pośrednictwem zamiarów to:

  • Wywołania API są synchroniczne, podczas gdy wywołania intencyjne są asynchroniczne.
  • Wywołania interfejsu API są powiązane podczas kompilacji, podczas gdy wywołania intencyjne są powiązane w czasie wykonywania.

Oczywiście intencje można sprawić, by działały dokładnie tak jak wywołania API, używając tak zwanych intencji jawnych, co zostanie wyjaśnione później. Ale najczęściej ukryte intencjewłaściwą drogą i właśnie to zostało tutaj wyjaśnione.

Jeden element, który chce się przywołać, musi wyrazić jedynie zamiar wykonania pracy. I każdy inny element, który istnieje i który twierdzi, że może wykonać takie zadanie za pomocą filtrów intencji , jest przywoływany przez platformę Android w celu wykonania zadania. Oznacza to, że żaden z komponentów nie jest świadomy swojego istnienia, ale może nadal współpracować, aby dać pożądany efekt końcowemu użytkownikowi.

To niewidoczne połączenie między komponentami jest osiągane poprzez połączenie zamiarów, filtrów zamiarów i platformy Android.

Prowadzi to do ogromnych możliwości, takich jak:

  • Miksuj i dopasowuj, a raczej podłącz i używaj komponentów w czasie wykonywania.
  • Zastępowanie wbudowanych aplikacji na Androida niestandardowymi aplikacjami.
  • Ponowne użycie na poziomie komponentów w aplikacjach i między nimi.
  • Zorientowanie na usługi do najbardziej szczegółowego poziomu, jeśli mogę powiedzieć.

Oto dodatkowe szczegóły techniczne na temat zamiarów z dokumentacji Androida .

Zamiarem jest abstrakcyjny opis operacji do wykonania. Można go użyć z startActivity do uruchomienia działania, broadcastIntent w celu wysłania go do wszystkich zainteresowanych komponentów BroadcastReceiver oraz startService (Intent) lub bindService (Intent, ServiceConnection, int) w celu komunikacji z usługą w tle.

Intent zapewnia funkcję umożliwiającą późne wiązanie środowiska wykonawczego między kodem w różnych aplikacjach. Jego najbardziej znaczącym zastosowaniem jest uruchamianie działań, gdzie można to traktować jako klej pomiędzy czynnościami. Zasadniczo jest to pasywna struktura danych zawierająca abstrakcyjny opis akcji do wykonania. Najważniejsze informacje w zamiarze to:

  • akcja Ogólne działanie, które należy wykonać, takie jak ACTION_VIEW, ACTION_EDIT, ACTION_MAIN itp.
  • dane Dane, na których ma działać operacja, takie jak rekord osoby w bazie danych kontaktów, wyrażone jako Uri.

Ucz się więcej

mr.boyfox
źródło
4
Doceniam wykorzystanie pojęć informatycznych w tym objaśnieniu. To sprawia, że ​​dyskusja jest bardziej konkretna i szczególnie pomocna dla czytelników z solidnym wykształceniem w dziedzinie informatyki.
Donal Lafferty
49

Intencje to sposób na powiedzenie Androidowi, co chcesz zrobić . Innymi słowy, opisujesz swój zamiar. Za pomocą zamiarów można zasygnalizować systemowi Android, że wystąpiło określone zdarzenie. Inne komponenty w Androidzie mogą zarejestrować się na to wydarzenie poprzez filtr celowy.

Poniżej znajdują się 2 rodzaje zamiarów

1. Wyraźne zamiary

służy do wywoływania określonego komponentu. Gdy wiesz, który komponent chcesz uruchomić, i nie chcesz dać użytkownikowi swobodnej kontroli nad tym, którego komponentu chcesz użyć. Na przykład masz aplikację, która ma 2 działania. Działanie A i działanie B. Chcesz uruchomić działanie B z działania A. W tym przypadku definiujesz wyraźne zamiary ukierunkowane na działanie B, a następnie używasz go do bezpośredniego wywołania.

2. Implikacje niejawne

używane, gdy masz pojęcie o tym, co chcesz zrobić, ale nie wiesz, który składnik powinien zostać uruchomiony. Lub jeśli chcesz dać użytkownikowi opcję wyboru między listą komponentów do użycia. Jeśli te zamiary zostaną wysłane do systemu Android, wyszuka wszystkie komponenty zarejestrowane dla określonego działania i typu danych. Jeśli zostanie znaleziony tylko jeden składnik, system Android uruchomi go bezpośrednio. Na przykład masz aplikację, która używa aparatu do robienia zdjęć. Jedną z funkcji Twojej aplikacji jest to, że dajesz użytkownikowi możliwość wysłania zdjęć, które zrobił. Nie wiesz, jaką aplikację ma użytkownik, który może wysyłać zdjęcia, a także chcesz dać użytkownikowi możliwość wyboru aplikacji zewnętrznej, jeśli ma więcej niż jedną. W takim przypadku nie użyłbyś wyraźnej intencji.

Jednoznaczne zamiary są zawsze dostarczane do celu, bez względu na to, co zawiera; filtr nie jest sprawdzany. Ale niejawna intencja jest dostarczana do komponentu tylko wtedy, gdy może przejść przez jeden z filtrów komponentu

Filtry intencyjne

Jeśli zamiary zostaną wysłane do systemu Android, określi odpowiednie aplikacje dla tych zamiarów. Jeśli zarejestrowano kilka komponentów dla tego typu Intencji, Android oferuje użytkownikowi możliwość otwarcia jednego z nich.

To ustalenie opiera się na IntentFilters. IntentFilters określa typy zamiarów, na które może reagować działanie, usługa lub odbiornik emisji. Filtr zamiarów deklaruje możliwości komponentu. Określa to, co może zrobić anaktywność lub usługa i jakie rodzaje transmisji może obsłużyć odbiornik. Umożliwia odpowiedniemu komponentowi otrzymywanie Intencji deklarowanego typu. IntentFilters są zazwyczaj definiowane za pomocą pliku AndroidManifest.xml. W przypadku BroadcastReceiver można również zdefiniować je w kodowaniu. Filtr IntentFilters jest definiowany przez filtry kategorii, akcji i danych. Może także zawierać dodatkowe metadane.

Jeśli komponent nie definiuje filtru zamiaru, można go wywołać tylko przez jawne zamiary.

Poniżej przedstawiono 2 sposoby definiowania filtra

1. plik manifestu

Jeśli zdefiniujesz filtr zamiaru w manifeście, aplikacja nie musi być uruchomiona, aby zareagować na zamiary zdefiniowane w filtrze. Android rejestruje filtr po zainstalowaniu aplikacji.

2.BroadCast Receiver

Jeśli chcesz, aby odbiornik radiowy odbierał informacje tylko wtedy, gdy aplikacja jest uruchomiona. Następnie powinieneś zdefiniować swój filtr zamiarów w czasie wykonywania (programowo). Pamiętaj, że działa to tylko w przypadku odbiorników telewizyjnych.

Varun Bhatia
źródło
12

Po napisaniu pojedynczego działania pojawia się potrzeba przejścia do innego działania w celu wykonania innego zadania z informacjami lub bez pierwszego działania.

Platforma Android umożliwia przejście za pomocą Intent Interface.

Słowa zostały zaczerpnięte stąd: używając Intent Demo i proponuję przejść przez ten przykład, ponieważ dostarczyli również plik kodu. dzięki czemu możesz go używać i łatwo zrozumieć to samo.

Paresh Mayani
źródło
Chodzi o coś więcej niż przechodzenie między działaniami. Bardziej pomocne byłoby przedstawienie przeglądu.
Vaddadi Kartick
@KartickVaddadi Zgadzam się z twoim punktem. To była moja odpowiedź na jedno użycie Intent!
Paresh Mayani,
Paresh, link blog.vimviv.com/android/intent-android już nie działa :(
user2060383
9

Android Intent

Android Intent umożliwia nawigację między aktywnością Androida. Z przykładami w tym samouczku omówiono różne rodzaje zamiarów Androida.

Android Intent można zdefiniować jako proste obiekty wiadomości, które służą do komunikowania się z jednej aktywności do drugiej.

Zamiary określają zamiar aplikacji. Służą również do przesyłania danych między czynnościami.

System Android Intent może służyć do wykonywania następujących 3 zadań:

  1. Otwórz inną działalność lub usługę z bieżącej działalności
  2. Przekaż dane między działaniami a usługami
  3. Przekaż odpowiedzialność na inną aplikację. Na przykład możesz użyć funkcji Intenty, aby otworzyć aplikację przeglądarki w celu wyświetlenia adresu URL.

Cel można ogólnie podzielić na 2 kategorie. Brak słów kluczowych dla tej kategorii, a jedynie ogólna klasyfikacja sposobu wykorzystania zamiarów Androida.

Jawne zamiary Androida

Jawna intencja Androida to intencja, w której wyraźnie definiujesz komponent, który musi zostać wywołany przez system Android.

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

Domniemana intencja Androida

Domniemane intencje Androida to intencja, w której zamiast definiowania dokładnych komponentów określasz akcję, którą chcesz wykonać. Decyzję o obsłużeniu tej akcji należy do systemu operacyjnego. System operacyjny decyduje, który składnik najlepiej uruchamiać w przypadku niejawnych zamiarów. Zobaczmy przykład:

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

Więcej informacji można znaleźć poniżej

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

IntelliJ Amiya
źródło
9

Według ich dokumentacji:

Intent to obiekt, który zapewnia powiązanie środowiska wykonawczego między osobnymi komponentami (takimi jak dwa działania). Zamiar reprezentuje „zamiar zrobienia czegoś przez aplikację”. Możesz użyć zamiarów do wielu różnych zadań, ale najczęściej są one używane do rozpoczęcia innej czynności.

Oto link z przykładem: http://developer.android.com/training/basics/firstapp/starting-activity.html#BuildIntent

Jak opisano w dokumencie, aby rozpocząć działanie (musisz również zrozumieć, co to jest działanie), skorzystaj z poniższych wskazówek

/** 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);
}
kta
źródło
8

Zamiarem jest abstrakcyjny opis operacji do wykonania. Można go używać z startActivity do uruchamiania działania, broadcastIntent w celu wysłania go do dowolnych zainteresowanych komponentów BroadcastReceiver oraz startService (Intent) lub bindService (Intent, ServiceConnection, int) do komunikacji z usługą w tle.

Aby uzyskać więcej informacji, zobacz te linki:

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

dostępnych jest wiele innych artykułów.

Dinesh Sharma
źródło
5

co to jest zamiar

Jest to rodzaj wiadomości lub informacji przekazywanych do komponentów. Służy do uruchamiania aktywności, wyświetlania strony internetowej, wysyłania SMS-ów, wysyłania wiadomości e-mail itp.

Istnieją dwa rodzaje zamiarów w Androidzie:

Domniemany zamiar
Jawny zamiar

Do wywołania komponentów systemu służy niejawna intencja

Przykład

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

startActivity(i);

Jawna intencja służy do wywołania klasy aktywności.

Przykład

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

startActivity(intent);

możesz przeczytać więcej

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

Mina Fawzy
źródło
2

Intent to klasa, która wiąże informacje do wykonywania niektórych akcji.

przykład: przekazywanie danych z jednego działania do drugiego działania, gdy użytkownik wykonuje takie działania w

obecna aktywność.

madarkife
źródło
1

W szerokim widoku możemy zdefiniować Intent jako

Gdy jedno działanie chce rozpocząć inne działanie, tworzy obiekt o nazwie Intent, który określa, które działanie chce rozpocząć.

Kartik Goyal
źródło
0

Aplikacja na Androida może zawierać zero lub więcej działań. Gdy aplikacja ma więcej niż jedną aktywność, często musisz nawigować między nimi. W Androidzie możesz poruszać się między czynnościami poprzez tak zwane zamiary. Możesz przekazać niektóre dane do działania, które chcesz rozpocząć poprzez zamiar, używając putExtra ().

Shaon Hasan
źródło
0

Z papierowego Deep Dive into Android IPC/Binder Framework atAndroid Builders Summit 2013 linku

Cel ten jest rozumiany w kilku małych, ale skutecznych liniach

  1. Android obsługuje prostą formę IPC (komunikacja między procesami) za pośrednictwem intencji
  2. Wiadomości celowe to platforma asynchronicznej komunikacji między komponentami systemu Android (aktywność, usługa, dostawcy treści, odbiornik transmisji)
  3. Te komponenty mogą działać w tej samej aplikacji lub w różnych aplikacjach (tj. Procesach)
  4. Umożliwia zarówno bezpośrednie przesyłanie wiadomości, jak i publikowanie domen wiadomości z subskrypcją
  5. Sama intencja stanowi komunikat zawierający opis operacji, która ma zostać wykonana, a także dane, które należy przekazać odbiorcy (odbiorcom).

Z tego wątku prosta odpowiedź architekta Androida Dianne Hackborn stwierdza, że ​​tak data containernaprawdę jest.

Z punktu widzenia architektury Androida :

Intent to kontener danych, który służy do komunikacji między procesami. Jest zbudowany na Binderpodstawie architektury Android.

Zahan Safallwa
źródło
0

Intencje są używane do inicjowania innej aktywności z jednego działania. Zasadniczo są wykorzystywane do kilku celów, takich jak wysyłanie danych do innego działania z jednego działania oraz do celów wyzwalania.

Są to zasadniczo dwa rodzaje

  1. Domniemane intencje.

  2. Jawne zamiary.

Jako początkujący wiem tak dużo, myślę, że da to podstawowe pojęcie o intencjach Androida

Soorya Prakash
źródło
2
Proszę przeczytać ten link w jaki sposób odpowiedzieć na pytania.
Bonatti