2015-01-31 81 views
0

是否可以創建活動單身人士? 我發現了許多資源,只是告訴使用android:launchMode="singleInstance"singleTask,但我會構造函數被調用一次。防止活動的多重實例化

理想情況下,我希望能夠指定自定義構造函數/構建方法,例如getInstance()

+2

這不是活動的工作方式。您找到的資源是正確的。 – Rohit5k2 2015-01-31 22:26:13

+0

好的。如果這是不可能的,是否有辦法實現類似的東西? – Mak 2015-01-31 22:28:05

+4

雖然在技術上可以讓任何一個班級成爲單身人士,但由於其生命週期的原因,一項活動是最差的候選人之一。您不會避免生命週期處理,對不起。你爲什麼需要這個? – 2015-01-31 22:28:26

回答

2

您可以將您的參考文獻保存在Application而不是Activity中。應用程序類實際上是一個單例。您只需要定義您的訪問方法。

public class BaseApplication extends Application { 

    private static BaseApplication sInstance = null; 

    public synchronized static BaseApplication getInstance() { 
    return sInstance; 
    } 

    public synchronized static void setInstance(BaseApplication app) { 
    sInstance = app; 
    } 

    public BaseApplication() { 
    } 

    @Override 
    public void onCreate() { 
    super.onCreate(); 
    setInstance(this); 
} 

現在您可以致電BaseApplication.getInstance()訪問它。作爲獎勵Application延伸Context所以現在你有一個應用程序上下文參考任何地方你想要的(除了膨脹佈局除了安全使用幾乎所有地方)。

不要忘了在你的清單來定義這個類的基類應用:

<application 
    android:name="com.yourapp.BaseApplication"> 
1

訂購他們做如下:

1)定義什麼包括Activity狀態

2)保存的狀態下onSaveInstanceState

3)onCreate或在還原狀態onRestoreInstanceState