2015-05-29 52 views
0

我構建了一個變量以用作會話。我在挽救來自特定用戶的ID在日誌當我運行另一個應用程序時,變量會丟失數據

我聲明我的登錄裏面的變量的AsyncTask

@Override 
protected void onPostExecute(String result){ 
    if(result == ""){ 
     this.statusField.setText("Wrong password."); 
    }else{ 

     context.startActivity(new Intent(context,ListUsersActivity.class)); 

     Session.suserid = result; 
    } 
} 

public static class Session{ 
    public static String suserid; 
} 

我的會話類:

public class NewSession extends Application { 

    Session session = new Session(); 

    public String getUserId() { 
     return session.suserid; 
    } 
} 

爲了從一開始的ID用戶,我只需要調用它:

NewSession app = (NewSession) getApplication(); 
userid = app.getUserId(); 

該代碼工作正常,但是當我運行Google Chrome,YouTube或其他應用程序,當我嘗試再次運行我的應用程序時,它會給我一個錯誤,因爲我的會話丟失了該值。

有沒有類似的方法來做我想做的事情?

謝謝。

+0

當你離開應用程序,系統可決定結束這個過程並釋放內存。當您離開應用並返回時,哪些生命週期事件會通過?在onPause()或onStop()中查看保存狀態並將其加載到onResume()或onStart() –

回答

4

代碼工作正常,但是當我運行Google Chrome,YouTube或其他應用程序時,當我嘗試再次運行我的應用程序時,它給我一個錯誤,因爲我的會話丟失了該值。

你的進程被終止,由於內存不足的情況。這是perfectly normal

靜態數據成員,包括自定義Application對象,只是一個短暫的高速緩存。如果你要掛到的數據,這些數據需要通過持久性數據存儲備份:數據庫,SharedPreferences,文件,互聯網的一些其他形式等

0

您需要實現在會話活動的onPause和活動的onResume從savedInstanceState包保存和恢復數據。

相關問題