2013-04-23 12 views

Odpowiedz

16

Można użyć Application Klasa:

public class MyApplication extends Application { 
private static Context context; 
private static Activity activity; 

public void onCreate() { 
    super.onCreate(); 
    MyApplication.context = getApplicationContext(); 
} 

public synchronized static Context getAppContext() { 
    return MyApplication.context; 
} 

/** 
* setCurrentActivity(null) in onPause() on each activity 
* setCurrentActivity(this) in onResume() on each activity 
* 
*/ 

public static void setCurrentActivity(Activity currentActivity) { 
    activity = currentActivity; 
} 

public static Activity currentActivity() { 
    return activity; 
} 

} 
+2

to „rozwiązanie” wprowadza kilka błędów w aplikacji, w tym: wyciek pamięci i niewłaściwych odniesień. Zawsze przejmuj kontrolę do bieżącej aktywności. Istnieje wiele technik śledzenia zmian aktywności (lub fragmentów transakcji). Głównym problemem jest to, że używasz zmiennych statycznych do przechowywania instancji, które wiesz, że będą nieważne w dowolnym momencie. – marciowb

+3

Dlatego napisałem komentarz w kodzie mówiąc, że ustaw bieżącą aktywność na null in onPause i ustaw ją ponownie w onResume – Abdullah

+1

Uważam, że to rozwiązanie jest poprawne. Ktoś inny spróbuje i dostanie problemy z tym rozwiązaniem. –

Powiązane problemy