2010-08-24 220 views

回答

3

閱讀製作singleton類,然後您可以在一個Activity中調用singleton.setArray(myArray),然後在下一個中調用singleton.setArray()。

+0

嗨,朋友可以告訴我們,併爲此問題示例代碼 – sivaraj 2010-08-24 15:12:28

+0

請按照鏈接,那裏有足夠的代碼。 – fredley 2010-08-24 15:22:01

5

在這裏使用Singleton可能是一個糟糕的主意,尤其是考慮到Android的kill-happy生命週期以及如果你做錯了leaking Context的可能性很高。 Android在Intents上有一個非常簡單而強大的內置消息傳遞功能 - 使用它!您應該使用內置的putExtra方法傳遞陣列作爲額外的Intent,或者使用內置的putExtra方法來獲取各種Java內置數組,或者確保您的數組由Serializable對象組成,並將其傳遞給Intent's putExtra method,該對象接受任何可序列化的對象。然後你可以簡單地在第二個Activity的onCreate()中獲得額外的Intent,不需要混亂的單例。

0

除了單例類,您可能還想看看如何使用Android SharedPreferences來保存/獲取任何數據,以保存設置或防止數據在被中斷時丟失。

在AndroidManifest中添加android:configChanges =「keyboardHidden | orientation」>將防止您的應用在旋轉屏幕/滑動打開的鍵盤時丟失數據。

SharedPref例

String m_myData[]; 
Boolean m_myBoolData[]; 

public static void saveSettings() 
{ 
    SharedPreferences.Editor editor = m_SharedPreferences.edit(); 
    for(int ix = 0; ix < m_myData[].length; ix++ 
    { 
     editor.putString("myKey" + ix, m_myData[ix]); 
     editor.putBoolean("myKey" + ix, m_myBoolData[ix]) 
    } 
} 

public static void getSettings() 
{ 

    for(int ix = 0; ix < m_myData[].length; ix++ 
    { 
     m_myData[ix] = m_SharedPreferences.getString("myKey" + ix, false); 
     m_myBoolData[ix] = m_SharedPreferences.getBoolean("myKey" + ix, false) 
    } 
} 
0

通過活動傳遞這將是表現最好的選擇,因爲如果你使用preferenes或意圖通過陣列上,你將不得不環路在陣列上堅持它並從Intent或Preferences中恢復它。

使用應用程序將允許您傳遞數組,但這樣做,就像使用singletone一樣,將強制您處理它的實例被銷燬,就好像您不會這樣做,即使兩次活動死亡後也不會被GCed因爲應用程序仍然會保留對它的引用。

相關問題