2010-11-19 9 views

Odpowiedz

8

Ta rozmowa wydaje się odpowiedzieć : http://groups.google.com/group/android-developers/browse_thread/thread/f47af26b696af2e2. Poszukaj postu zaczynającego się od "Yes and no" i kilku przed nim.

Odpowiedź jest pozytywna: tak, po ponownym uruchomieniu działania zamykanego przez system operacyjny, funkcja getIntent() zwróci intencję z tymi samymi dodatkami co oryginalny.

Niemniej jednak, jeśli jakiś specjalista od Androida mógłby potwierdzić, byłbym zadowolony, słysząc to. :)

0

Sobear,

Odpowiedź na to "nie, nie". Istnieje wiele różnych powodów. Najpierw przeformuujmy działanie (wiem, że to wiesz, ale przedstawiam punkt).

  1. Aby rozpocząć działanie, tworzony jest zamiar. Ta zamiar może pochodzić z ikony aplikacji na ekranie głównym, ze składnika aplikacji, który jest aktualnie uruchomiony, lub nawet z innego komponentu innej aplikacji pod warunkiem, że ma uprawnienia do jej uruchomienia.

  2. Intencja zostaje wysłana do systemu Android, a system Android próbuje ją rozwiązać, wysyłając ją do aplikacji lub wysyłając do użytkownika zapytanie, jeśli nie może samodzielnie rozwiązać problemu.

  3. Po uruchomieniu aplikacji zatrzymuje się na intencji, która została uruchomiona w celu umożliwienia kontroli bezpieczeństwa, śledzenia wstecznego itd. Pozwala to programistom i użytkownikom upewnić się, że tak naprawdę chcą zrobić ... Ten zamiar pozostaje przez cały cykl życia Aktywności i wszystko inne, co Przekazuje aktywność.

  4. Użytkownik robi pewne rzeczy, rozprasza się i przenosi na inne działania. Aplikacja będzie nadal działać, dopóki pamięć nie będzie niska.

  5. Pamięć jest niska, a Android zabija działanie. Aktywność traci cel (chyba, że ​​został w jakiś sposób zapisany).

  6. Użytkownik widzi, że Activity zmarł i decyduje się na ponowne uruchomienie. Android tworzy nowy zamiar rozpocząć aktywny -> wróć do kroku 1.

Od nowa zamiarem było wymagane, aby ponownie uruchomić aplikację, stare intencją nie jest już zamocowana do działania. Jeśli chodzi o to, czy jest on gromadzony w Garbage, nie jestem pewien, kiedy to się stanie, ale nie jest dostępny. Jeśli przechowywanie dodatków jest twoją troską, jest tylko jeden sposób na zrobienie tego (kilka możliwych implementacji, oczywiście). Intencje i dodatki muszą być przechowywane w pewien sposób. Nie wpłynie to na funkcję getIntent(), ale MOŻESZ stworzyć osobną funkcję getOriginalIntent(), która będzie ją opierać. Stamtąd, istnieje szereg opcji ... Na przykład, można uruchomić ponownie aktywny z pierwotnej intencji i WTEDY getIntent() będzie działać ...

FuzzicalLogic

+0

Ale testowałem, czy aktywność zostanie zabita, os automatycznie zapisuje dodatki dla ciebie i przekazuje je z powrotem za pomocą 'getIntent(). GetExtras()' –

0

Cóż, zawsze możesz zrobić prosty eksperyment samodzielnie, przez zmieniając opcję "nie wypełniaj aktywności" na, w opcjach dewelopera.

Jeśli ta flaga jest włączona, po każdym wyjściu z aplikacji (np. Kliknięciu przycisku home) system operacyjny zabije działanie, a po powrocie do aplikacji poprzednie działanie zostanie odtworzone.

Moje eksperymenty powiedziały mi, że getIntent() zawsze będzie miał te same dane po odtworzeniu aktywności.

Powiązane problemy