2010-07-16 75 views
3

我正在開發一個android應用程序,其中第一個活動是Login。認證成功後,用戶可以看到有4個選項卡的活動。我的問題是,當用戶點擊主頁按鈕時,應用程序應該終止,並且當用戶再次啓動我的應用程序時,他應該能夠再次看到登錄屏幕,並且在成功登錄後,用戶應該能夠看到在其上他在應用程序終止之前工作(即,保存所有選項卡的狀態)。請幫我解決這個問題。提前致謝。在我的Android應用程序中保存狀態

回答

2

您可以在Android中以三種方式保存狀態。

  1. 首選項:用於存儲應用程序首選項。
  2. 文件系統:使用Android IO。
  3. 的Sql精簡版DB:數據保存到數據庫

你可以存儲在數據庫中的選項卡,選擇保存的狀態每當用戶回來您的應用程序的時間。

這個android dev網站有很多關於這些存儲方法的信息。 data storage

0

使用SharedPreferences

SharedPreferences實施例(從對Webworld):

 /** 
     * get if this is the first run 
     * 
     * @return returns true, if this is the first run 
     */ 
      public boolean getFirstRun() { 
      return mPrefs.getBoolean("firstRun", true); 
     } 

     /** 
     * store the first run 
     */ 

     public void setRunned() { 
      SharedPreferences.Editor edit = mPrefs.edit(); 
      edit.putBoolean("firstRun", false); 
      edit.commit(); 
     } 

     SharedPreferences mPrefs; 

    /** 
    * setting up preferences storage 
    */ 
    public void firstRunPreferences() { 
     Context mContext = this.getApplicationContext(); 
     mPrefs = mContext.getSharedPreferences("myAppPrefs", 0); //0 = mode private. only this app can read these preferences 
    } 
3

許多應用可提供一種方式來捕獲特定的應用程序或活動的設置用戶偏好。爲了支持這一點,Android提供了一組簡單的API。

首選項通常是名稱值對。它們可以作爲「共享首選項」存儲在應用程序中的各種活動中(請注意,目前不能在各個進程間共享)。或者它可能是需要針對某個活動存儲的內容。

  1. 共享偏好:共享偏好可以由所有的組件(活動,服務等)關閉應用中。

  2. 活動處理的首選項:這些首選項只能在活動中使用,並且不能由應用程序的其他組件使用。

共享偏好:

共享偏好與Context類的getSharedPreferences方法的幫助下管理。首選項存儲在默認文件(1)中,或者您可以指定用於引用首選項的文件名(2)。

(1)這是在指定的文件名

public static final String PREF_FILE_NAME = "PrefFile"; 
    SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE); 

MODE_PRIVATE是偏好操作模式如何獲得實例。這是默認模式,意味着創建的文件只能被調用應用程序訪問。其他支持的兩種模式是MODE_WORLD_READABLEMODE_WORLD_WRITEABLE。在MODE_WORLD_READABLE其他應用程序可以讀取創建的文件,但不能修改它。在MODE_WORLD_WRITEABLE的情況下,其他應用程序也對創建的文件具有寫入權限。

(2)推薦的方法是使用默認模式上PreferenceManager,不指定文件名

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); 

最後,一旦你的喜好來說,這裏是你如何能檢索從首選項存儲的值

int storedPreference = preferences.getInt("storedInt", 0); 

店在首選項文件值必須使用對象。 EditorSharedPreference類的嵌套接口。

SharedPreferences.Editor editor = preferences.edit(); 
editor.putInt("storedInt", storedPreference); // value to store 
editor.commit(); 

remove()clear()編輯器還支持方法來刪除該文件的優先級。

活動設定:

共享偏好可以由其他應用程序組件中使用。但是,如果您不需要與其他組件共享偏好並希望擁有活動的私人偏好。你可以在getPreferences()活動的幫助下做到這一點。 getPreference方法使用getSharedPreferences()方法以及首選項文件名稱的活動類名稱。

以下是代碼即可獲得優惠

SharedPreferences preferences = getPreferences(MODE_PRIVATE); 
int storedPreference = preferences.getInt("storedInt", 0); 

存儲值的代碼也一樣共享偏好的情況下。

SharedPreferences preferences = getPreference(MODE_PRIVATE); 
SharedPreferences.Editor editor = preferences.edit(); 
editor.putInt("storedInt", storedPreference); // value to store 
editor.commit(); 

您還可以使用其他方法,如將活動狀態存儲在數據庫中。注意Android還包含一個名爲android.preference的包。該包定義了實現應用程序首選項UI的類。

要查看更多示例,請在開發人員網站上查看Android的Data Storage帖子。

相關問題