Jestem w stanie pobrać kontakty za pomocą tego kodu https://stackoverflow.com/a/1780818/992774, działa idealnie dobrze i zwraca wszystkie e-maile i numery telefonów.
Ale mój problem polega na tym, że gdy mam 10 000 kontaktów, zajmuje to około 3-4 minut i na ten czas blokuje mój interfejs i wygląda na to, że moja aplikacja została zatrzymana. Widziałem wiele aplikacji, takich jak groupme, która pokazuje kontakty bez poświęcania czasu.
Czy ktoś może zasugerować, jak skrócić czas podczas pobierania tysięcy kontaktów lub jak mogę stworzyć niestandardowy adapter kursora?

0
Manish Agrawal 5 marzec 2012, 15:06

2 odpowiedzi

Najlepsza odpowiedź

Czy możesz wykonać ładowanie w osobnym wątku, używając Handlera lub AsyncTask, na przykład zapoznaj się z tym samouczkiem http://www.vogella.de/articles/AndroidPerformance/article.html

Dzięki temu wątek interfejsu użytkownika będzie mógł swobodnie wykonywać czynności związane z interfejsem użytkownika i powinieneś być w stanie zobaczyć, jak twoje kontakty są wypełniane jeden po drugim na ekranie.

1
Soham 5 marzec 2012, 15:11

Użyj CursorLoader, aby uzyskać kursor. Działa asynchronicznie, więc nie zawiesisz wątku interfejsu użytkownika podczas pobierania danych.

To może trochę potrwać. Czy warto cofnąć się na chwilę i zapytać, czy trzeba przejrzeć 10 000 kontaktów? Wydaje mi się, że prawie niemożliwe jest przeszukanie ich na ekranie.

1
Joe Malin 6 marzec 2012, 06:09