2012-05-23 91 views
3

我已經創建了擴展應用到存儲變量我想從多個活動Android「的全局變量」不堅持

public class MyApplication extends Application 
{ 
private String fbId, firstName; 
private long expires; 

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

public String getFbId() 
{ 
    return fbId; 
} 

public void setFbId(String fbId) 
{ 
    this.fbId = fbId; 
} 

public String getFirstName() 
{ 
    return firstName; 
} 

public void setFirstName(String firstName) 
{ 
    this.firstName = firstName; 
} 

我能夠訪問這些變量並設置這些變量的第一次訪問類我我正在運行應用程序。一旦我退出並重新啓動應用程序,它會將我的值設置爲null,並提出爲什麼會發生這種情況的任何建議?

回答

4

如果你沒有將數據存儲在存儲器中(不需要是數據庫,可以是平面文件,SharedPreferences或其他),那麼它不是持久的。

您應該使用SharedPreferences來保存這種持久性數據。

SharedPreferences類提供了一個通用框架,允許您保存和檢索原始數據類型的持久鍵值對。您可以使用SharedPreferences來保存任何原始數據:布爾值,浮點數,整數,長整數和字符串。這些數據將在用戶會話中持續存在(即使您的應用程序被終止)。

+1

這是正確答案,根據定義,任何內容都不會持久。 – Snicolas

+1

好吧,我之前一直在使用SharedPreferences,但我認爲這會起到類似的作用。 –

+0

如果您沒有將數據存儲在存儲器中(不需要是數據庫,可能是平面文件,SharedPreferences或其他),那麼它不是持久的。 –

0

沒有辦法在任何語言中保存變量。只要程序的生命週期結束,所有的變量就會被破壞,並且內存從RAM /堆內存中釋放。

的持久性,可以有以下選擇,

  1. 文件系統
    • 一個簡單的文件格式(如.TXT)
    • 逗號分隔的文件格式(如.CSV)
  2. 數據庫
    • sqlite的(Android中的情​​況下)
    • RMS(Java ME中的情況下,黑莓)
  3. 編程LANGUAG支持的持久性存儲
    • SharredPreference

只有將變量的值存儲到上述任何一種機制中,您纔可以將值設爲持久性

0

如果您回來時需要這些數據,您可能需要保留這些數據。您可以使用不同的存儲介質,如SharedPreference,Local Files,sqlite等。請參閱here