2013-04-23 3 views

ответ

16

Вы можете использовать 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; 
} 

} 
+2

Это «решение» представляет несколько ошибок в вашем приложении, в том числе: утечки памяти и неправильных ссылок. Всегда контролируйте текущую активность. Существует множество методов отслеживания переходов активности (или транзакций фрагментов). Основная проблема здесь заключается в том, что вы используете статические переменные для хранения экземпляров, которые, как вы знаете, будут недействительными в любое время. – marciowb

+3

Вот почему я написал комментарий в коде, в котором указано, что текущая активность имеет значение null в onPause и снова задана в onResume – Abdullah

+1

. Я считаю, что это решение действительно. Кто-нибудь еще попробовал и получал проблемы с этим решением. –

Смежные вопросы