2012-06-13 5 views
5

To jest dość stare pytanie, ale szczerze mówiąc, jeszcze nie mogę znaleźć odpowiedzi w sposób, który zaspokaja moją ciekawość.Szukałem laymans wyjaśnienia oczekującej koncepcji intencji

Zanim, drogi czytelniku, przeskocz do referencji programisty Androida, aby wkleić tekst, proszę mieć świadomość, że przeczytałem już dokumentację Intent/Pending Intent i jeszcze nie jestem w stanie rozwiązać mojego zamieszania.

Uderza mnie, że model intencji jest rdzeniem systemu Android i jako taki ma charakter bardzo ogólny. Z tego powodu przykłady, które widziałem, są często i różnorodne. Ta odmiana zaciemnia pojęcie, którego się uczę, a to jest frustrujące.

Moje pytania są po prostu napisane, ale być może trudne do wyjaśnienia w prostych słowach. Rozumiem, że zamiar jest przesłaniem do innych działań i że inne działania mogą wyrazić zainteresowanie ich manifestem. Oczekiwanie, intencja, opakowanie intencji, dezorientuje mnie.

  1. Widzę dokumentację dotyczącą uprawnień i tokena. Rozumiem, ale dlaczego intencja jest potrzebna jako osobny byt - jakie zachowanie to umożliwia?
  2. Jakie działania związane z cyklem życia czynności/zadania powodują oczekujące zamiary?
  3. Kiedy wymagany jest odbiornik telewizyjny?
  4. Jakie są ograniczenia odbiornika telewizyjnego?

Zdaję sobie sprawę, że są to poważnie nowe pytania (którymi jestem), ale rozpaczliwie chcę zrozumieć te podstawowe pojęcia, więc nie muszę polegać na przykładach/przewodnikach/oficjalnych dokumentach tak bardzo.

Wszelkie opinie są mile widziane. Dzięki.

Odpowiedz

2

Głównym celem PendingIntent jest przekazanie innemu wniosku pisemnej zgody na zrobienie czegoś w zamian. Aplikacje są ograniczone do tego, na co pozwalają, zasadniczo, z tych dwóch czynników:

  • Widoczność. Komponenty takie jak Usługi lub Czynności, które nie są dostarczane z publicznie widocznym (ani żadnym) filtrem intencyjnym, nie mogą być wywołane przez inne aplikacje. Mogą być wywoływane tylko przez twoją aplikację za pomocą wyraźnych intencji określających ich nazwę pakietu i klasy.
  • Uprawnienia. Każda aplikacja może zażądać określonej liczby uprawnień. Są to głównie predefiniowane uprawnienia, ale możesz również zdefiniować swoje własne uprawnienia, chociaż nigdy tego nie używałem. Twoja aplikacja nie może zrobić niczego, co przekracza te uprawnienia.

Teraz z toczącym się praktycznie można ominąć oba te ograniczenia, jeśli aplikacja, która ma wymaganych uprawnień i widoczność zrobić coś specjalnie pozwala ty to zrobić w jej imieniu. Aplikacja może na przykład umożliwić wywołanie jednej z jej prywatnych czynności, jeśli zawiera ona oczekujące zamierzenie, które zawiera wyraźne intencje dla wspomnianych działań.

[edycja] Są one używane na przykład w menedżerze alarmów. Informuje kierownika alarmu o tym, co i kiedy zrobić, nadając mu (w toku) zamiar. Ponieważ twoja aplikacja prawdopodobnie nie będzie już dostępna, gdy nadejdzie czas, menedżer alarmów będzie musiał wysłać ją za Ciebie. Oznaczałoby to, że te zamiary mogą wykonywać tylko to, co może zrobić menedżer alarmów, a nie to, co może zrobić twoja aplikacja.Jeśli menedżer alarmów mógł po prostu robić cokolwiek, każda aplikacja mogłaby zrobić wszystko, używając menedżera alarmów jako serwera proxy. Musisz więc użyć oczekujących zamiarów, aby konkretnie przyznać menedżerowi alarmów prawa, których potrzebuje do określonego celu. [/ Edit]

Poza tym, nie ma zbyt wielkiej różnicy w stosunku do zwykłych intencji, przynajmniej tak jak w miarę użytkowania. Trochę to komplikuje się z lepkimi zamiarami itp., Ale to jest ogólny sens tego, przynajmniej z tego, co wiem.

Odbiornik telewizyjny jest wymagany, gdy chce się zareagować na pewne system events lub zdarzenia innych aplikacji. Odbiornik telewizyjny jest niewidoczny, nie tworzy żadnej formy widoku i nie angażuje żadnej formy interakcji użytkownika. Zaletą jest to, że może się to zdarzyć niezależnie od tego, czy twoja aplikacja (lub raczej twoje działania) są obecnie uruchomione, czy nie.

Odbiornik telewizyjny ma tylko 10 sekund na robienie rzeczy, po czym zostaje zabity przez system. Jeśli więc chcesz wykonywać długotrwałe procesy, musisz użyć usługi działającej w tle lub otworzyć działanie, aby Twoi użytkownicy robili różne rzeczy.

+0

Doskonały spis. Teraz czuję się o wiele bardziej pewny siebie. Dziękuję za szybką odpowiedź. – Gusdor