Mam statyczną klasę Preferencje, która ma pewne preferencje aplikacji i takie tam. Czy można przechowywać tam odwołanie do ApplicationContext? Potrzebuję tego odniesienia, aby uzyskać folder pamięci podręcznej i podobne rzeczy w klasach, które nie dziedziczą działania.Android - przechowywanie odwołań do ApplicationContext
Odpowiedz
Masz prawo korzystać z ApplicationContext
tam, ponieważ jeśli nie it can cause significant memory leaks.
Jednak problem polega na tym, że zmienna static
może nie zachować swojej wartości. Ze względu na sposób, w jaki Android obsługuje aplikacje, możliwe jest, że twoja aplikacja może zostać zabita, a następnie zrestartowana - zwykle z powodu przełączenia użytkownika na inne aplikacje - w taki sposób, że zmienna static
stanie się pusta, a Twój kod, który ją ustawi, wygra. t być uruchomione. Have a look at this question for a more detailed answer.
Możliwe, że uda się obejść ten problem, ale przetestowanie wszystkich możliwości, które mogą spowodować, że zmienna zakończy się, będzie czasochłonne i podatne na błędy. Tak więc w moich klasach preferencji statycznych wprowadziłem jedną z metod, które wymagają użycia argumentu jako Context
. Na przykład:
static int getSomeIntegerPreference(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context).getInt(PREFERENCE_SOME_INTEGER, 0);
}
Jest brzydki, ale działa.
- 1. Embedded Mono: Przechowywanie odwołań do obiektów C# w C++
- 2. Sposób wstrzykiwania samego ApplicationContext
- 3. Spring ApplicationContext Bean Scope
- 4. Znajdowanie wszystkich odwołań do Eclipse
- 5. Jakie korzyści daje użycie ApplicationContext?
- 6. Skojarzenie między: SpringIocContainer | ApplicationContext | WebApplicationContext
- 7. Przechowywanie danych do NSUserDefaults
- 8. Jak uzyskać dostęp do ApplicationContext z usługi WWW JAX-WS?
- 9. Nie można załadować aplikacji ApplicationContext do testu JUnit kontrolera Spring
- 10. Korzystając z @RunWith (SpringJUnit4ClassRunner.class), można uzyskać dostęp do obiektu ApplicationContext?
- 11. Canlele obsługują wiele odwołań do obiektów
- 12. Ruby string sub bez odwołań do regex
- 13. Sprawdzone metody odwołań do JavaScriptu IntelliSense
- 14. Czy można uzyskać liczbę odwołań do obiektu?
- 15. Uzyskiwanie hierarchii odwołań do ładowania klas Java
- 16. Utrata odwołań do przeniesieniaDelegate przed prezentacją presetentation
- 17. PhoneGap - lokalne przechowywanie nie działa - Android
- 18. samodzielna definicja struktury odwołań?
- 19. Interfejsy bez liczenia odwołań
- 20. Tryb odwołań offline
- 21. Inicjowanie odwołań w C++
- 22. Przechowywanie wyników zestaw do tablicy
- 23. Przechowywanie danych do analizy finansowej
- 24. Przechowywanie pliku do System uri?
- 25. Omijanie (wyłączanie) Licznik odwołań Delphi dla interfejsów
- 26. przekazywanie odwołań do komórek do funkcji arkusza kalkulacyjnego
- 27. shared_ptr i odwołań w C++
- 28. Dodawanie odwołań dodaje niepoprawną wersję
- 29. Opis licznika odwołań zmiennej klasy
- 30. Zasady pomocą odwołań w C++
Ustawiłem moje Preferences.applicationContext na getApplicationContent() przy pierwszym uruchomieniu działania. Więc myślę, że powinno tam być, chyba że aplikacja umiera (VM umiera, proces zostaje zabity, itd.). A jeśli umrze, przy następnym uruchomieniu ponownie zainicjuje Preferences.applicationContext, więc myślę, że powinno działać poprawnie. Potrzebuję czegoś takiego, ponieważ potrzebuję dostępu do kontekstu w niektórych klasach, które nie widzą getApplicationContext(). Na przykład moja kategoria musi pobrać ikony dla każdej kategorii, więc ustawiam ścieżkę ikony na tę. filepath = Preferences.applicationContext.getCacheDir(). ToString – nixa
Będziesz musiał zainicjować 'Preferences.applicationContext' w * every * Activity, która używa twojej klasy' Preferences'. Twój proces może zostać zabity podczas wykonywania innej czynności niż pierwsza aktywność, a Android może zwrócić użytkownika do tego punktu w aplikacji, pomijając pierwszą czynność. –