2011-07-20 15 views
7

Jakie jest najlepsze podejście z perspektywy wydajności, aby pokazać ListView z kontaktami i numerami telefonów?Najlepsza praktyka polegająca na wyświetlaniu kontaktów i numerów telefonów z Androidem

  • Zastosowanie CursorAdapter kursorem kontaktów i dokonać kwerendy numery telefonów, gdy Bindview jest wywoływana dla każdego wiersza
  • skopiować wszystkie kontakty i numery telefonów do tablicy w pamięci w wątku tła, a następnie pokazać je ArrayAdapter.
  • Inne rozwiązania?

Odpowiedz

1

Moim zdaniem rozwiązanie mieszane powinno być lepsze. Dlaczego to? Ponieważ nie wiesz lub przypuszczasz, że w większości kontekstów nie wiesz, jak i ile kontaktów Twoja aplikacja będzie musiała podać na listę. A także ile kontaktów jest przechowywanych w telefonie. Jeśli znamy obie odpowiedzi, z pewnością możemy przyjąć rozwiązanie najbardziej zbliżone.

Proponuję więc najpierw wprowadzić stałą liczbę kontaktów za pomocą tablicy w pamięci w wątku w tle, na przykład w pierwszym 20. Również, jeśli uważasz, że Twoja aplikacja będzie wykonywać więcej niż jedno żądanie do tej usługi. byłoby wspaniale używać pewnego rodzaju buforowania. Najgorsze podejście powinno polegać na ponownym nawiązywaniu połączenia z usługą kontaktów. Następnie na prośbę o kontakt nr 21 możesz przynieść następne 20 i tak dalej.

Dzięki temu możesz korzystać z zalet obu światów i minimalizować wady. Zawsze zależy od aplikacji i kontekstu, o którym mówimy.

1

myślę, że to będzie zależeć od trzech czynników:

  1. Ile kontaktów mówimy tutaj?
  2. Ile czasu zajmuje załadowanie każdego kontaktu? (Np. Czy masz bardzo skomplikowany widok, który wymaga zawyżenia lub czy możesz pobrać obrazy kontaktów/itp., Które wymagają jakichkolwiek operacji we/wy sieci?).

Twoje rozwiązanie można by zmieścić większości przypadków jednak drugie rozwiązanie oferuje pewne zalety, a także:

Rozwiązanie 1:

zaletę:

  1. Opóźnione widok inflację w " przeglądanie w trakcie przeglądania "może działać dobrze, gdy jest wystarczająco szybki, aby nadmuchać widoki bez zauważalnych zakłóceń interfejsu użytkownika.

Wada:

  1. Jeśli współpracownik kontakty z wieloma danymi i wymaga trochę skomplikować inflację, można zaobserwować opóźnienie.

  2. Mniej elastyczny i rozszerzalny w porównaniu do rozwiązania 2. Jak omówiono poniżej.

Rozwiązanie 2:

zaletę:

  1. Masz kontrolę wszystkich etapów, dzięki czemu można łatwo symulować to tak proste jak jedno, ale dodając rzeczy może być łatwiejsze: wyszukiwań poprzez całą pamięć, niestandardowe sortowanie w tablicy itp. działają lepiej, gdy wszystko jest już sprawdzone w tablicy, która już tam jest. Lub jeśli chcesz wykonać niestandardowe ładowanie później lub dodać więcej danych dotyczących kontaktów, które wymagają trochę więcej przetwarzania (np. We/wy sieci), może to być nieco łatwiejsze niż adapter kursora.

Wada:

  1. Wykonanie: to nie jest sposób tekst-book to zrobić. sprawianie, by rzeczy były bardziej niestandardowe, będą wymagać od ciebie obsługi wszystkich wątków i dobrze radzą sobie z początkowym wyglądem. Upewnij się, że skaluje się.

Tak, w zależności od tego, nad czym dokładnie pracujesz, wybierz odpowiedni.

Powiązane problemy