2010-07-29 19 views
6

Jaki jest właściwy sposób wymiany danych lub obiektów między różnymi działaniami Android?Jak wymieniać dane (obiekty) między różnymi działaniami Android?

ekran powitalny < -> Ekran główny < - Procedury> Startup < - dane> Przetwarzanie < -> Ustawienia

Czy to normalne/Zaleca się mieć więcej niż jedną aktywność w aplikacji na Androida? moim zdaniem, to jakoś dziwnie mieć ten model wymiany danych wewnątrz aplikacji

+0

możliwy duplikat [Jak przekazywać dane między działaniami w systemie Android?] (Http://stackoverflow.com/questions/2091465/how-do- i-pass-data-between-activities-in-android) –

Odpowiedz

6

Jest to przegląd na stronie programistów Androida:

http://developer.android.com/guide/appendix/faq/framework.html#3

Aby podsumować, to zależy od typu danych twoje przejście. Ale ogólnie mówiąc, jeśli to możliwe, wybrałbym Intents, ponieważ są one szybkie i zbudowane na to.

Here to przykład wyjaśniający, jak przekazywać dane między działaniami za pomocą Intents.

+4

Używaj tylko dodatków "Intent" do rzeczy związanych z tym, co uruchamiasz. Pomyśl o nich jako o odpowiedniku parametrów adresu URL używanego w łączu między stronami w witrynie sieci Web. W szczególności nie przechowuj danych modelu w dodatkach "Intent", ponieważ kończysz N kopiami tych danych w miarę przesuwania ich z działania do działania. Co więcej, "Intencje" pozostają w pamięci przez dość długi czas, czasami nawet po zniszczeniu aktywności, więc koszt pamięci staje się znacznie wyższy. – CommonsWare

4

Odpowiedź brzmi: to zależy.

zależności od architektury aplikacji, może chcesz:

  • przechowywać swoje dane w niestandardowym ContentProvider i przekazać wokół odniesień URI do niej --- jeśli aplikacja opiera się na bazie danych , to jest droga, ponieważ pozwala innym aplikacjom odnieść się bezpośrednio do twoich danych;

  • Udostępniaj swoje działania, przesyłając sobie nawzajem Intencje, z danymi umieszczonymi w niestandardowych polach danych intencji --- jeśli używasz tylko bardzo małych elementów danych, takich jak nazwy lub URI, jest to prosty sposób zarządzania rzeczami, ale rozkłada się na większe przedmioty;

  • Mieć wszystkie swoje działania w ramach jednego procesu i przechowywać dane we wspólnych obiektach Java --- na ogół niezalecane, ale odpowiednie dla wyspecjalizowanych aplikacji, takich jak gry (ale pamiętaj o problemach związanych z cyklem życia aplikacji!).

Moje aplikacje mają tendencję do korzystania z kombinacji dwóch pierwszych: dane mieszka głównie w ContentProvider, ale również użyć zamiary wysłać out-of-band informacji między ContentProvider i działalności, gdy takie dane wygrał Łatwo pasuje do API ContentProvider.

9

Czy to normalne/zalecane jest mieć więcej niż jedno działanie w aplikacji na Androida?

Normalna? Tak. Zalecana? To zależy od aplikacji.

moim zdaniem, to jakoś dziwnie mają ten model wymiany danych wewnątrz aplikacji

Co zrobić z aplikacji internetowych? Cóż, przechowujesz swój model w centralnym miejscu (serwerze) i przekazujesz małe fragmenty danych kontekstowych (parametry URL) w linkach między głównymi jednostkami interfejsu użytkownika (strony).

Co robisz w aplikacjach komputerowych? Cóż, utrzymujesz model w centralnym miejscu (bazie danych) i przekazujesz małe bity danych kontekstowych (np. Parametry konstruktora) w linkach między głównymi jednostkami interfejsu użytkownika (Windows).

Co robisz w aplikacjach na Androida? Cóż, przechowujesz swój model w centralnym miejscu (baza danych, ContentProvider, itd.) I przekazujesz małe fragmenty danych kontekstowych (Intent dodatków) w linkach między głównymi jednostkami interfejsu użytkownika (czynności).

+0

Kiedy to ułożysz, jest to logiczne. – Ante

0

Czy to, co nakazuje google można zrobić tutaj: http://developer.android.com/resources/faq/framework.html#3

Choices: prymitywnych typów danych Nietrwałe Przedmioty klasy Singleton - mój faworyt: D publiczne statyczne pole/metoda HashMap z WeakReferences do Obiekty Obiekty trwałe (Preferencje aplikacji, pliki, dostawcy treści, baza SQLite)

Powiązane problemy