2013-04-23 118 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 2014-02-11 22:52:05

+3

這就是爲什麼我在代碼中寫了一條評論,說在onPause中將當前活動設置爲null,並在onResume中再次設置它 – Abdullah 2014-03-06 06:54:12

+1

我認爲這個解決方案是有效的。任何人都可以嘗試一下並解決這個問題。 – 2015-03-31 04:49:27