Postaram naprawdę trudno przekształcić jednego kompleksowego pytanie:Kontekst Androida bez aktywności? I inne programowanie bez czynności?
Piszę metodę, aby uzyskać ciąg, który zawiera nazwę miasta androida urządzenia, jak określono w LocationManager
i getLastKnownLocation()
i wszystko, .
Potem zdałem sobie sprawę, że muszę zrobić to samo jeszcze raz w innej czynności, więc dlaczego nie zrobić zupełnie oddzielnej klasy (LocationFinder
), którą mógłbym użyć w moim programie, zamiast pisać wszędzie duplikat kodu?
Ale mam problemy, które mnie dezorientują. Na przykład, jeśli zrobię tę klasę (LocationFinder
), czy powinna ona rozszerzyć działanie, nawet jeśli nigdy nie jest faktycznie wizualizowana? Cała ta klasa mogłaby mieć różne atrybuty, takie jak getLastKnownCity()
lub getCurrentCity()
i zwracać ciągi. Sądziłem, że nie trzeba będzie rozszerzać klasy aktywności, ponieważ tak naprawdę nie jest to działanie.
Ale co Kontekst mogę użyć do:
Geocoder geocoder = new Geocoder(Context context, Locale locale)
?
To spowodowało, że zakładam, że MUSI to być działalność. Więc przedłużone działanie, a zastąpił konstruktora z
@Override
protected void onCreate(..............
ale z jakiegoś powodu, że nigdy nie kończy się nazywa zaczyna, nawet kiedy kładę
String city = new LocationFinder().getLastKnownCity();
Moja pierwsza linia LocationFinder
„s onCreate()
jest
System.out.println("HEY!")
i nigdy do tego nie dojdzie. Dostaję zerowy wskaźnik na android.internal.os.LoggingPrintStream.println()
i inne rzeczy.
Dodatkowo, istnieje kilka stałych systemowych, które pochodzą z klas aktywności. Na przykład, muszę uzyskać numer LOCATION_SERVICE
, który jest ciągiem znaków, którego nie mogę uzyskać bez rozszerzenia działania. Pewnie, mógłbym oszukać i po prostu wstawić literalną strunę, ale to źle działa.
Dzięki! Zastanawiasz się, czy nie byłoby użyteczne użycie getApplicationContext() zamiast przekazywania kontekstu działania, tak jak polecasz? Nadal nie rozumiem kontekstów, mimo że wciąż czytam ich definicję ... Po prostu nie rozumiem, co powoduje, że Kontekst działania różni się od innego. – andy
To prawda, odniesienie do kontekstu zostanie zniszczone, gdy zostanie wywołana funkcja onDestroy. – frogmanx