2011-08-13 22 views

回答

3

是的。有很多(見下文),但是根本不推薦。通過定製的構造函數創建線程時,最好傳遞上下文。

比如(再次提示 - 真的discourged):

的活動:

class SomeActivity extends Activity { 
    public static Context ctx; 

    protected void onCreate(Bundle bundle) { 
     // ... 
     ctx = this; 
     // ... 
    } 

    public static Context getLastSetContext() { 
     return ctx; 
    } 
} 
在線程

Context ctx = SomeActivity.getLastSetContext(); 
+0

但使用的ApplicationContext,而不是不應該讓內存泄漏吧?最新的問題是什麼? – Addev

+0

在簡單的情況下,這可能會變得很好,但隨着應用程序變得越來越大,您會看到自己的缺點,依賴於某些不能保證實例的靜態字段,並且可能會被更改(當你擴展你的應用程序)是不安全的恕我直言,如果你仍然想這樣做,我不是阻止你的人。 – MByD

+0

這當然不僅僅是令人沮喪的,而且是一個大內存泄漏的祕訣。我會建議永遠不要這樣做。 – sstn

3

由谷歌推薦的方式來創建一個實例的應用程序類。 從他們的文檔:

「通常不需要繼承應用程序。在大多數情況下,靜態單例可以以更模塊化的方式提供相同的功能。如果您的單例需要全局上下文(例如註冊廣播接收器),檢索它的函數可以被賦予一個Context,它在第一次構造單例時在內部使用Context.getApplicationContext()。「

參考 1 2

相關問題