Вы можете использовать Application
класс:
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;
}
}
Это «решение» представляет несколько ошибок в вашем приложении, в том числе: утечки памяти и неправильных ссылок. Всегда контролируйте текущую активность. Существует множество методов отслеживания переходов активности (или транзакций фрагментов). Основная проблема здесь заключается в том, что вы используете статические переменные для хранения экземпляров, которые, как вы знаете, будут недействительными в любое время. – marciowb
Вот почему я написал комментарий в коде, в котором указано, что текущая активность имеет значение null в onPause и снова задана в onResume – Abdullah
. Я считаю, что это решение действительно. Кто-нибудь еще попробовал и получал проблемы с этим решением. –