Jestem zakładając, że jesteś powołując się statycznych pól klasy, w przeciwieństwie do statycznej klasie które, jak Wyzard wskazał, to coś zupełnie innego. Ogólną zasadą jest, że przechowywanie informacji w statycznych polach nie jest dobrym pomysłem w Javie. Powodem tego jest to, że uniemożliwia to tworzenie instancji wielu wystąpień tego, co przechowujesz w klasie.
W konkretnym przypadku Androida, najlepszym sposobem radzenia sobie z problemem konieczności dane przechowywane związane ze stosowaniem sama jest do podklasy klasy android.app.Application
i używać go do obsługi aplikacji globalne dane:
class FooApplication extends Application
{
private String privData;
public String getPrivData() {
return privData;
}
}
Następnie należy zadeklarować, że ta klasa jest twoją główną klasą aplikacji (zamiast domyślnej Application
).We wpisie w AndroidManifest.xml
application
dodać następujące:
<application android:name="com.example.application.FooApplication"
...>
...
</application>
Następnie można patrzeć instancję aplikacji z dowolnego miejsca wewnątrz aplikacji przy użyciu metody Context.getApplicationContext()
który będzie instancją swojej Application
podklasy:
FooApplication app = (FooApplication)Context.getApplicationContext();
String privData = app.getPrivData();
W zależności od miejsca, w którym próbujesz wyszukać podklasę "Aplikacja", może być konieczne wywołanie "getApplicationContext()" bez "Kontekstu":
FooApplication app = (FooApplication)getApplicationContext();
String privData = app.getPrivData();
Najlepszym sposobem jest użycie SharedPreferences – Pragnani
@Pagagnani Współdzielone preferencje są dobre dla niektórych typów danych - małe ilości danych, które pasują do modelu klucz/wartość i nie zajmują dużo czasu, aby załadować je do pamięci. Nie pasuje do każdego problemu. –
Czy masz na myśli * singleton *? "Klasa statyczna" to klasa wewnętrzna, która nie wymaga instancji klasy obejmującej, która nie ma nic wspólnego z udostępnianiem danych w całej aplikacji. – Wyzard