2013-04-23 10 views

risposta

16

È possibile utilizzare Application classe:

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

Questa "soluzione" è l'introduzione di diversi bug nell'applicazione, tra cui: perdita di memoria e riferimenti sbagliati. Porta sempre il controllo sull'attività corrente. Esistono molte tecniche per tenere traccia delle transizioni di attività (o transazioni di frammenti). Il problema principale qui è dovuto al fatto che stai usando variabili statiche per conservare istanze che sai che non saranno più valide in qualsiasi momento. – marciowb

+3

Ecco perché ho scritto un commento nel codice dicendo di impostare l'attività corrente su null in onPause e impostarlo nuovamente su onResume – Abdullah

+1

Penso che questa soluzione sia valida. Qualcun altro lo prova e trova problemi con questa soluzione. –

Problemi correlati