È 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;
}
}
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
Ecco perché ho scritto un commento nel codice dicendo di impostare l'attività corrente su null in onPause e impostarlo nuovamente su onResume – Abdullah
Penso che questa soluzione sia valida. Qualcun altro lo prova e trova problemi con questa soluzione. –